]> git.ipfire.org Git - thirdparty/opentracker.git/commitdiff
some clients chose to accidently send negative numwants
authorerdgeist <>
Tue, 23 Oct 2007 00:39:21 +0000 (00:39 +0000)
committererdgeist <>
Tue, 23 Oct 2007 00:39:21 +0000 (00:39 +0000)
opentracker.c
scan_urlencoded_query.c

index 41df0eedcee561263a0228c74387a3bc49c28a94..cfa051ae1717d58544759efe8c2d35b12b6441fc 100644 (file)
@@ -511,6 +511,7 @@ ANNOUNCE_WORKAROUND:
         if(!byte_diff(data,7,"numwant")) {
           len = scan_urlencoded_query( &c, data = c, SCAN_SEARCHPATH_VALUE );
           if( ( len <= 0 ) || scan_fixed_int( data, len, &numwant ) ) HTTPERROR_400_PARAM;
+          if( numwant < 0 ) numwant = 50;
           if( numwant > 200 ) numwant = 200;
         } else if(!byte_diff(data,7,"compact")) {
           len = scan_urlencoded_query( &c, data = c, SCAN_SEARCHPATH_VALUE );
index 241a904b41c6dd9df3b21aecdd7d29ef0f9a8585..a78a69773247f7ef811223f74d090c10cc73463f 100644 (file)
@@ -78,8 +78,11 @@ ssize_t scan_urlencoded_query(char **string, char *deststring, SCAN_SEARCHPATH_F
 }
 
 ssize_t scan_fixed_int( char *data, size_t len, int *tmp ) {
+  int minus = 0;
   *tmp = 0;
+  if( *data == '-' ) --len, ++data, ++minus;
   while( (len > 0) && (*data >= '0') && (*data <= '9') ) { --len; *tmp = 10**tmp + *data++-'0'; }
+  if( minus ) *tmp = -*tmp;
   return len;
 }