mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-11-28 14:21:00 +01:00
[BUILD] fix some build warnings on Solaris with is* macros
isalnum, isdigit and friends are really annoying because they take an int in which we should pass an unsigned char, while strings everywhere use chars. Solaris uses macros relying on an array for those functions, which easily triggers some warnings showing where we have mistakenly passed a char instead of an unsigned char or an int. Those warnings may indicate real bugs on some platforms depending on the implementation.
This commit is contained in:
parent
0e996c681f
commit
88e058164a
@ -407,7 +407,7 @@ int chunk_htmlencode(struct chunk *dst, struct chunk *src) {
|
||||
|
||||
c = src->str[i];
|
||||
|
||||
if (!isascii(c) || !isprint(c) || c == '&' || c == '"' || c == '\'' || c == '<' || c == '>') {
|
||||
if (!isascii(c) || !isprint((unsigned char)c) || c == '&' || c == '"' || c == '\'' || c == '<' || c == '>') {
|
||||
l = snprintf(dst->str + dst->len, free, "&#%u;", (unsigned char)c);
|
||||
|
||||
if (free < l) {
|
||||
@ -447,7 +447,7 @@ int chunk_asciiencode(struct chunk *dst, struct chunk *src, char qc) {
|
||||
|
||||
c = src->str[i];
|
||||
|
||||
if (!isascii(c) || !isprint(c) || c == '<' || c == '>' || c == qc) {
|
||||
if (!isascii(c) || !isprint((unsigned char)c) || c == '<' || c == '>' || c == qc) {
|
||||
l = snprintf(dst->str + dst->len, free, "<%02X>", (unsigned char)c);
|
||||
|
||||
if (free < l) {
|
||||
|
||||
@ -727,7 +727,8 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
|
||||
|
||||
for (i=0; args[1][i]; i++) {
|
||||
c = args[1][i];
|
||||
if (!isupper(c) && !islower(c) && !isdigit(c) && c != '_' && c != '-' && c != '.')
|
||||
if (!isupper((unsigned char)c) && !islower((unsigned char)c) &&
|
||||
!isdigit((unsigned char)c) && c != '_' && c != '-' && c != '.')
|
||||
break;
|
||||
}
|
||||
|
||||
@ -2506,7 +2507,8 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm)
|
||||
|
||||
for (i=0; args[2][i]; i++) {
|
||||
c = args[2][i];
|
||||
if (!isupper(c) && !islower(c) && !isdigit(c) && c != '_' && c != '-' && c != '.')
|
||||
if (!isupper((unsigned char)c) && !islower((unsigned char)c) &&
|
||||
!isdigit((unsigned char)c) && c != '_' && c != '-' && c != '.')
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@ -906,7 +906,8 @@ static int event_srv_chk_r(int fd)
|
||||
if ((len < strlen("HTTP/1.0 000\r")) ||
|
||||
(memcmp(trash, "HTTP/1.", 7) != 0 ||
|
||||
(trash[12] != ' ' && trash[12] != '\r')) ||
|
||||
!isdigit(trash[9]) || !isdigit(trash[10]) || !isdigit(trash[11])) {
|
||||
!isdigit((unsigned char)trash[9]) || !isdigit((unsigned char)trash[10]) ||
|
||||
!isdigit((unsigned char)trash[11])) {
|
||||
|
||||
cut_crlf(trash);
|
||||
set_server_check_status(s, HCHK_STATUS_L7RSP, trash);
|
||||
@ -941,7 +942,8 @@ static int event_srv_chk_r(int fd)
|
||||
/* Check if the server speaks SMTP */
|
||||
if ((len < strlen("000\r")) ||
|
||||
(trash[3] != ' ' && trash[3] != '\r') ||
|
||||
!isdigit(trash[0]) || !isdigit(trash[1]) || !isdigit(trash[2])) {
|
||||
!isdigit((unsigned char)trash[0]) || !isdigit((unsigned char)trash[1]) ||
|
||||
!isdigit((unsigned char)trash[2])) {
|
||||
|
||||
cut_crlf(trash);
|
||||
set_server_check_status(s, HCHK_STATUS_L7RSP, trash);
|
||||
|
||||
@ -184,7 +184,7 @@ const char *invalid_char(const char *name)
|
||||
return name;
|
||||
|
||||
while (*name) {
|
||||
if (!isalnum((int)*name) && *name != '.' && *name != ':' &&
|
||||
if (!isalnum((int)(unsigned char)*name) && *name != '.' && *name != ':' &&
|
||||
*name != '_' && *name != '-')
|
||||
return name;
|
||||
name++;
|
||||
@ -203,7 +203,7 @@ const char *invalid_domainchar(const char *name) {
|
||||
return name;
|
||||
|
||||
while (*name) {
|
||||
if (!isalnum((int)*name) && *name != '.' &&
|
||||
if (!isalnum((int)(unsigned char)*name) && *name != '.' &&
|
||||
*name != '_' && *name != '-')
|
||||
return name;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user