From 0c3b8ffe25f43e59dfe8b1aeb219ff1cb4c6aa2b Mon Sep 17 00:00:00 2001 From: Maria Matejka Date: Sat, 17 Aug 2019 15:03:09 +0200 Subject: [PATCH] Lexer: strtoul shall never set endptr to NULL; it should be an error --- conf/cf-lex.l | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/conf/cf-lex.l b/conf/cf-lex.l index 1d6cae2c..9ea05e9d 100644 --- a/conf/cf-lex.l +++ b/conf/cf-lex.l @@ -169,7 +169,7 @@ WHITE [ \t] errno = 0; l = bstrtoul10(yytext, &e); - if (e && (*e != ':') || (errno == ERANGE) || (l >> 32)) + if (!e || (*e != ':') || (errno == ERANGE) || (l >> 32)) cf_error("ASN out of range"); if (l >> 16) @@ -187,7 +187,7 @@ WHITE [ \t] errno = 0; l = bstrtoul10(e+1, &e); - if (e && *e || (errno == ERANGE) || (l >> len2)) + if (!e || *e || (errno == ERANGE) || (l >> len2)) cf_error("Number out of range"); cf_lval.i64 |= l; @@ -214,13 +214,13 @@ WHITE [ \t] errno = 0; l = bstrtoul10(yytext+2, &e); - if (e && (*e != ':') || (errno == ERANGE) || (l >> len1)) + if (!e || (*e != ':') || (errno == ERANGE) || (l >> len1)) cf_error("ASN out of range"); cf_lval.i64 |= ((u64) l) << len2; errno = 0; l = bstrtoul10(e+1, &e); - if (e && *e || (errno == ERANGE) || (l >> len2)) + if (!e || *e || (errno == ERANGE) || (l >> len2)) cf_error("Number out of range"); cf_lval.i64 |= l; @@ -242,7 +242,7 @@ WHITE [ \t] errno = 0; l = bstrtoul10(e, &e); - if (e && *e || (errno == ERANGE) || (l >> 16)) + if (!e || *e || (errno == ERANGE) || (l >> 16)) cf_error("Number out of range"); cf_lval.i64 |= l; @@ -266,7 +266,7 @@ WHITE [ \t] unsigned long int l; errno = 0; l = bstrtoul16(yytext+2, &e); - if (e && *e || errno == ERANGE || (unsigned long int)(unsigned int) l != l) + if (!e || *e || errno == ERANGE || (unsigned long int)(unsigned int) l != l) cf_error("Number out of range"); cf_lval.i = l; return NUM; @@ -277,7 +277,7 @@ WHITE [ \t] unsigned long int l; errno = 0; l = bstrtoul10(yytext, &e); - if (e && *e || errno == ERANGE || (unsigned long int)(unsigned int) l != l) + if (!e || *e || errno == ERANGE || (unsigned long int)(unsigned int) l != l) cf_error("Number out of range"); cf_lval.i = l; return NUM;