Skip to content

Commit bd3d070

Browse files
committed
Merge pull request #10 from hideaki/verifyssn_infinite_loop
fix for issues in ssn_verify such as infinite loop.
2 parents d7280c6 + 7beb244 commit bd3d070

File tree

1 file changed

+11
-16
lines changed

1 file changed

+11
-16
lines changed

apache2/re_operators.c

+11-16
Original file line numberDiff line numberDiff line change
@@ -3170,40 +3170,35 @@ static int ssn_verify(modsec_rec *msr, const char *ssnumber, int len) {
31703170
int area, serial, grp;
31713171
int sequencial = 0;
31723172
int repetitions = 0;
3173-
int progression = 0;
31743173
char *str_area;
31753174
char *str_grp;
31763175
char *str_serial;
31773176

31783177
for (i = 0; i < len; i++) {
31793178
if (apr_isdigit(ssnumber[i])) {
3180-
num[i] = convert_to_int(ssnumber[i]);
3181-
digits++;
3179+
if (digits < 9)
3180+
num[digits] = convert_to_int(ssnumber[i]);
3181+
digits++;
31823182
}
31833183
}
31843184

31853185
/* Not a valid number */
31863186
if (digits != 9)
31873187
goto invalid;
31883188

3189-
digits = 0;
3190-
3191-
for (i=0; i < len-1; i++) {
3192-
progression = (num[i] - (num[i+1]-1));
3193-
repetitions = (num[i] - num[i+1]);
3189+
for (i=0; i < 8; i++) {
3190+
if (num[i] == (num[i+1]-1))
3191+
sequencial++;
31943192

3195-
if (repetitions != 0 )
3196-
sequencial = 1;
3197-
3198-
if (progression == 0)
3199-
digits++;
3193+
if (num[i] == num[i+1])
3194+
repetitions++;
32003195
}
32013196

3202-
/* We are blocking when all numbers were repeated */
3203-
if (sequencial == 0)
3197+
/* We are blocking when all numbers were sequencial or repeated */
3198+
if (sequencial == 8)
32043199
goto invalid;
32053200

3206-
if (digits == 8)
3201+
if (repetitions == 8)
32073202
goto invalid;
32083203

32093204
str_area = apr_psprintf(msr->mp,"%d%d%d",num[0],num[1],num[2]);

0 commit comments

Comments
 (0)