Removed the unsafe nxt_memchr() wrapper for memchr(3).

The casts are unnecessary, since memchr(3)'s argument is 'const void *'.
It might have been necessary in the times of K&R, where 'void *' didn't
exist.  Nowadays, it's unnecessary, and _very_ unsafe, since casts can
hide all classes of bugs by silencing most compiler warnings.

The changes from nxt_memchr() to memchr(3) were scripted:

$ find src/ -type f \
  | grep '\.[ch]$' \
  | xargs sed -i 's/nxt_memchr/memchr/'

Reviewed-by: Andrew Clayton <a.clayton@nginx.com>
Signed-off-by: Alejandro Colomar <alx@nginx.com>
This commit is contained in:
Alejandro Colomar
2022-11-02 21:45:40 +01:00
parent 1b05161107
commit ebf02266a2
10 changed files with 23 additions and 27 deletions

View File

@@ -2710,12 +2710,12 @@ nxt_conf_vldt_environment(nxt_conf_validation_t *vldt, nxt_str_t *name,
"The environment name must not be empty."); "The environment name must not be empty.");
} }
if (nxt_memchr(name->start, '\0', name->length) != NULL) { if (memchr(name->start, '\0', name->length) != NULL) {
return nxt_conf_vldt_error(vldt, "The environment name must not " return nxt_conf_vldt_error(vldt, "The environment name must not "
"contain null character."); "contain null character.");
} }
if (nxt_memchr(name->start, '=', name->length) != NULL) { if (memchr(name->start, '=', name->length) != NULL) {
return nxt_conf_vldt_error(vldt, "The environment name must not " return nxt_conf_vldt_error(vldt, "The environment name must not "
"contain '=' character."); "contain '=' character.");
} }
@@ -2727,7 +2727,7 @@ nxt_conf_vldt_environment(nxt_conf_validation_t *vldt, nxt_str_t *name,
nxt_conf_get_string(value, &str); nxt_conf_get_string(value, &str);
if (nxt_memchr(str.start, '\0', str.length) != NULL) { if (memchr(str.start, '\0', str.length) != NULL) {
return nxt_conf_vldt_error(vldt, "The \"%V\" environment value must " return nxt_conf_vldt_error(vldt, "The \"%V\" environment value must "
"not contain null character.", name); "not contain null character.", name);
} }
@@ -2926,7 +2926,7 @@ nxt_conf_vldt_argument(nxt_conf_validation_t *vldt, nxt_conf_value_t *value)
nxt_conf_get_string(value, &str); nxt_conf_get_string(value, &str);
if (nxt_memchr(str.start, '\0', str.length) != NULL) { if (memchr(str.start, '\0', str.length) != NULL) {
return nxt_conf_vldt_error(vldt, "The \"arguments\" array must not " return nxt_conf_vldt_error(vldt, "The \"arguments\" array must not "
"contain strings with null character."); "contain strings with null character.");
} }
@@ -2985,7 +2985,7 @@ nxt_conf_vldt_java_classpath(nxt_conf_validation_t *vldt,
nxt_conf_get_string(value, &str); nxt_conf_get_string(value, &str);
if (nxt_memchr(str.start, '\0', str.length) != NULL) { if (memchr(str.start, '\0', str.length) != NULL) {
return nxt_conf_vldt_error(vldt, "The \"classpath\" array must not " return nxt_conf_vldt_error(vldt, "The \"classpath\" array must not "
"contain strings with null character."); "contain strings with null character.");
} }
@@ -3006,7 +3006,7 @@ nxt_conf_vldt_java_option(nxt_conf_validation_t *vldt, nxt_conf_value_t *value)
nxt_conf_get_string(value, &str); nxt_conf_get_string(value, &str);
if (nxt_memchr(str.start, '\0', str.length) != NULL) { if (memchr(str.start, '\0', str.length) != NULL) {
return nxt_conf_vldt_error(vldt, "The \"options\" array must not " return nxt_conf_vldt_error(vldt, "The \"options\" array must not "
"contain strings with null character."); "contain strings with null character.");
} }

View File

@@ -1637,7 +1637,7 @@ nxt_controller_process_cert(nxt_task_t *task,
name.length = path->length - 1; name.length = path->length - 1;
name.start = path->start + 1; name.start = path->start + 1;
p = nxt_memchr(name.start, '/', name.length); p = memchr(name.start, '/', name.length);
if (p != NULL) { if (p != NULL) {
name.length = p - name.start; name.length = p - name.start;

View File

@@ -2609,7 +2609,7 @@ nxt_h1p_peer_header_parse(nxt_http_peer_t *peer, nxt_buf_mem_t *bm)
p += 12; p += 12;
length -= 12; length -= 12;
p = nxt_memchr(p, '\n', length); p = memchr(p, '\n', length);
if (nxt_slow_path(p == NULL)) { if (nxt_slow_path(p == NULL)) {
return NXT_AGAIN; return NXT_AGAIN;

View File

@@ -1016,7 +1016,7 @@ nxt_http_route_pattern_create(nxt_task_t *task, nxt_mp_t *mp,
if (type == NXT_HTTP_ROUTE_PATTERN_EXACT) { if (type == NXT_HTTP_ROUTE_PATTERN_EXACT) {
tmp.start = test.start; tmp.start = test.start;
p = nxt_memchr(test.start, '*', test.length); p = memchr(test.start, '*', test.length);
if (p == NULL) { if (p == NULL) {
/* No '*' found - EXACT pattern. */ /* No '*' found - EXACT pattern. */
@@ -1414,7 +1414,7 @@ nxt_http_pass_segments(nxt_mp_t *mp, nxt_str_t *pass, nxt_str_t *segments,
nxt_memzero(segments, n * sizeof(nxt_str_t)); nxt_memzero(segments, n * sizeof(nxt_str_t));
do { do {
p = nxt_memchr(rest.start, '/', rest.length); p = memchr(rest.start, '/', rest.length);
if (p != NULL) { if (p != NULL) {
n--; n--;

View File

@@ -93,7 +93,7 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp,
inet6 = &pattern->addr.v6; inet6 = &pattern->addr.v6;
delim = nxt_memchr(addr.start, '-', addr.length); delim = memchr(addr.start, '-', addr.length);
if (delim != NULL) { if (delim != NULL) {
len = delim - addr.start; len = delim - addr.start;
if (nxt_slow_path(!nxt_valid_ipv6_blocks(addr.start, len))) { if (nxt_slow_path(!nxt_valid_ipv6_blocks(addr.start, len))) {
@@ -126,7 +126,7 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp,
goto parse_port; goto parse_port;
} }
delim = nxt_memchr(addr.start, '/', addr.length); delim = memchr(addr.start, '/', addr.length);
if (delim != NULL) { if (delim != NULL) {
cidr_prefix = nxt_int_parse(delim + 1, cidr_prefix = nxt_int_parse(delim + 1,
addr.start + addr.length - (delim + 1)); addr.start + addr.length - (delim + 1));
@@ -201,7 +201,7 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp,
base->addr_family = AF_INET; base->addr_family = AF_INET;
delim = nxt_memchr(addr.start, ':', addr.length); delim = memchr(addr.start, ':', addr.length);
if (delim != NULL) { if (delim != NULL) {
port.start = delim + 1; port.start = delim + 1;
port.length = addr.start + addr.length - port.start; port.length = addr.start + addr.length - port.start;
@@ -210,7 +210,7 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp,
inet = &pattern->addr.v4; inet = &pattern->addr.v4;
delim = nxt_memchr(addr.start, '-', addr.length); delim = memchr(addr.start, '-', addr.length);
if (delim != NULL) { if (delim != NULL) {
inet->start = nxt_inet_addr(addr.start, delim - addr.start); inet->start = nxt_inet_addr(addr.start, delim - addr.start);
if (nxt_slow_path(inet->start == INADDR_NONE)) { if (nxt_slow_path(inet->start == INADDR_NONE)) {
@@ -234,7 +234,7 @@ nxt_http_route_addr_pattern_parse(nxt_mp_t *mp,
goto parse_port; goto parse_port;
} }
delim = nxt_memchr(addr.start, '/', addr.length); delim = memchr(addr.start, '/', addr.length);
if (delim != NULL) { if (delim != NULL) {
cidr_prefix = nxt_int_parse(delim + 1, cidr_prefix = nxt_int_parse(delim + 1,
addr.start + addr.length - (delim + 1)); addr.start + addr.length - (delim + 1));
@@ -283,7 +283,7 @@ parse_port:
return NXT_OK; return NXT_OK;
} }
delim = nxt_memchr(port.start, '-', port.length - 1); delim = memchr(port.start, '-', port.length - 1);
if (delim != NULL) { if (delim != NULL) {
ret = nxt_int_parse(port.start, delim - port.start); ret = nxt_int_parse(port.start, delim - port.start);
if (nxt_slow_path(ret < 0 || ret > 65535)) { if (nxt_slow_path(ret < 0 || ret > 65535)) {

View File

@@ -653,7 +653,7 @@ nxt_sockaddr_inet6_parse(nxt_mp_t *mp, nxt_str_t *addr)
length = addr->length - 1; length = addr->length - 1;
start = addr->start + 1; start = addr->start + 1;
end = nxt_memchr(start, ']', length); end = memchr(start, ']', length);
if (nxt_slow_path(end == NULL)) { if (nxt_slow_path(end == NULL)) {
return NULL; return NULL;
} }
@@ -723,7 +723,7 @@ nxt_sockaddr_inet_parse(nxt_mp_t *mp, nxt_str_t *addr)
in_addr_t inaddr; in_addr_t inaddr;
nxt_sockaddr_t *sa; nxt_sockaddr_t *sa;
p = nxt_memchr(addr->start, ':', addr->length); p = memchr(addr->start, ':', addr->length);
if (p == NULL) { if (p == NULL) {
length = addr->length; length = addr->length;
@@ -964,11 +964,11 @@ nxt_inet6_probe(nxt_str_t *str)
{ {
u_char *colon, *end; u_char *colon, *end;
colon = nxt_memchr(str->start, ':', str->length); colon = memchr(str->start, ':', str->length);
if (colon != NULL) { if (colon != NULL) {
end = str->start + str->length; end = str->start + str->length;
colon = nxt_memchr(colon + 1, ':', end - (colon + 1)); colon = memchr(colon + 1, ':', end - (colon + 1));
} }
return (colon != NULL); return (colon != NULL);

View File

@@ -66,10 +66,6 @@ nxt_cpymem(void *dst, const void *src, size_t length)
(void) memmove(dst, src, length) (void) memmove(dst, src, length)
#define nxt_memchr(s, c, length) \
memchr((char *) s, c, length)
#define nxt_strcmp(s1, s2) \ #define nxt_strcmp(s1, s2) \
strcmp((char *) s1, (char *) s2) strcmp((char *) s1, (char *) s2)

View File

@@ -456,7 +456,7 @@ nxt_var_next_part(u_char *start, size_t length, nxt_str_t *part,
end = start + length; end = start + length;
p = nxt_memchr(start, '$', length); p = memchr(start, '$', length);
if (p == start) { if (p == start) {
*is_var = 1; *is_var = 1;

View File

@@ -41,7 +41,7 @@ typedef enum {
nxt_inline nxt_bool_t nxt_inline nxt_bool_t
nxt_is_var(nxt_str_t *str) nxt_is_var(nxt_str_t *str)
{ {
return (nxt_memchr(str->start, '$', str->length) != NULL); return (memchr(str->start, '$', str->length) != NULL);
} }

View File

@@ -765,7 +765,7 @@ nxt_perl_psgi_result_status(PerlInterpreter *my_perl, SV *result)
status.start = (u_char *) SvPV(*sv_status, status.length); status.start = (u_char *) SvPV(*sv_status, status.length);
space = nxt_memchr(status.start, ' ', status.length); space = memchr(status.start, ' ', status.length);
if (space != NULL) { if (space != NULL) {
status.length = space - status.start; status.length = space - status.start;
} }