[libc] Fix a validation bug in strtoul()
authorMichael Brown <mcb30@etherboot.org>
Tue, 18 Mar 2008 03:14:05 +0000 (03:14 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 18 Mar 2008 03:14:05 +0000 (03:14 +0000)
strtoul() was accepting the characters immediately above ASCII 0..9 as
valid hex digits, due to a missing comparison.

src/core/misc.c

index a54f5a1..1f51272 100644 (file)
@@ -69,7 +69,7 @@ unsigned long strtoul ( const char *p, char **endp, int base ) {
                        charval = ( charval - 'a' + 10 );
                } else if ( charval >= 'A' ) {
                        charval = ( charval - 'A' + 10 );
                        charval = ( charval - 'a' + 10 );
                } else if ( charval >= 'A' ) {
                        charval = ( charval - 'A' + 10 );
-               } else {
+               } else if ( charval <= '9' ) {
                        charval = ( charval - '0' );
                }
                if ( charval >= ( unsigned int ) base )
                        charval = ( charval - '0' );
                }
                if ( charval >= ( unsigned int ) base )