comparison src/core/ngx_proxy_protocol.c @ 8101:42bc158a47ec

Fixed PROXY protocol to use ngx_memcpy()/ngx_memcmp().
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 08 Nov 2022 12:48:21 +0300
parents 251daa98cc87
children
comparison
equal deleted inserted replaced
8100:251daa98cc87 8101:42bc158a47ec
107 107
108 p = buf; 108 p = buf;
109 len = last - buf; 109 len = last - buf;
110 110
111 if (len >= sizeof(ngx_proxy_protocol_header_t) 111 if (len >= sizeof(ngx_proxy_protocol_header_t)
112 && memcmp(p, signature, sizeof(signature) - 1) == 0) 112 && ngx_memcmp(p, signature, sizeof(signature) - 1) == 0)
113 { 113 {
114 return ngx_proxy_protocol_v2_read(c, buf, last); 114 return ngx_proxy_protocol_v2_read(c, buf, last);
115 } 115 }
116 116
117 if (len < 8 || ngx_strncmp(p, "PROXY ", 6) != 0) { 117 if (len < 8 || ngx_strncmp(p, "PROXY ", 6) != 0) {
394 394
395 in = (ngx_proxy_protocol_inet_addrs_t *) buf; 395 in = (ngx_proxy_protocol_inet_addrs_t *) buf;
396 396
397 src_sockaddr.sockaddr_in.sin_family = AF_INET; 397 src_sockaddr.sockaddr_in.sin_family = AF_INET;
398 src_sockaddr.sockaddr_in.sin_port = 0; 398 src_sockaddr.sockaddr_in.sin_port = 0;
399 memcpy(&src_sockaddr.sockaddr_in.sin_addr, in->src_addr, 4); 399 ngx_memcpy(&src_sockaddr.sockaddr_in.sin_addr, in->src_addr, 4);
400 400
401 dst_sockaddr.sockaddr_in.sin_family = AF_INET; 401 dst_sockaddr.sockaddr_in.sin_family = AF_INET;
402 dst_sockaddr.sockaddr_in.sin_port = 0; 402 dst_sockaddr.sockaddr_in.sin_port = 0;
403 memcpy(&dst_sockaddr.sockaddr_in.sin_addr, in->dst_addr, 4); 403 ngx_memcpy(&dst_sockaddr.sockaddr_in.sin_addr, in->dst_addr, 4);
404 404
405 pp->src_port = ngx_proxy_protocol_parse_uint16(in->src_port); 405 pp->src_port = ngx_proxy_protocol_parse_uint16(in->src_port);
406 pp->dst_port = ngx_proxy_protocol_parse_uint16(in->dst_port); 406 pp->dst_port = ngx_proxy_protocol_parse_uint16(in->dst_port);
407 407
408 socklen = sizeof(struct sockaddr_in); 408 socklen = sizeof(struct sockaddr_in);
421 421
422 in6 = (ngx_proxy_protocol_inet6_addrs_t *) buf; 422 in6 = (ngx_proxy_protocol_inet6_addrs_t *) buf;
423 423
424 src_sockaddr.sockaddr_in6.sin6_family = AF_INET6; 424 src_sockaddr.sockaddr_in6.sin6_family = AF_INET6;
425 src_sockaddr.sockaddr_in6.sin6_port = 0; 425 src_sockaddr.sockaddr_in6.sin6_port = 0;
426 memcpy(&src_sockaddr.sockaddr_in6.sin6_addr, in6->src_addr, 16); 426 ngx_memcpy(&src_sockaddr.sockaddr_in6.sin6_addr, in6->src_addr, 16);
427 427
428 dst_sockaddr.sockaddr_in6.sin6_family = AF_INET6; 428 dst_sockaddr.sockaddr_in6.sin6_family = AF_INET6;
429 dst_sockaddr.sockaddr_in6.sin6_port = 0; 429 dst_sockaddr.sockaddr_in6.sin6_port = 0;
430 memcpy(&dst_sockaddr.sockaddr_in6.sin6_addr, in6->dst_addr, 16); 430 ngx_memcpy(&dst_sockaddr.sockaddr_in6.sin6_addr, in6->dst_addr, 16);
431 431
432 pp->src_port = ngx_proxy_protocol_parse_uint16(in6->src_port); 432 pp->src_port = ngx_proxy_protocol_parse_uint16(in6->src_port);
433 pp->dst_port = ngx_proxy_protocol_parse_uint16(in6->dst_port); 433 pp->dst_port = ngx_proxy_protocol_parse_uint16(in6->dst_port);
434 434
435 socklen = sizeof(struct sockaddr_in6); 435 socklen = sizeof(struct sockaddr_in6);