Fossil SCM
Avoid overflow problems if users enter negative numbers for the "dw" and "dc" URI query parameters.
Commit
30478e4e7e01b99e1d7baaf4f5b8dc529e5fef9e
Parent
6474a92a87d06f6…
1 file changed
+2
-2
+2
-2
| --- src/info.c | ||
| +++ src/info.c | ||
| @@ -353,16 +353,16 @@ | ||
| 353 | 353 | int x; |
| 354 | 354 | diffFlags = DIFF_SIDEBYSIDE | DIFF_IGNORE_EOLWS; |
| 355 | 355 | |
| 356 | 356 | /* "dw" query parameter determines width of each column */ |
| 357 | 357 | x = atoi(PD("dw","80"))*(DIFF_CONTEXT_MASK+1); |
| 358 | - if( x>DIFF_WIDTH_MASK ) x = DIFF_WIDTH_MASK; | |
| 358 | + if( x<0 || x>DIFF_WIDTH_MASK ) x = DIFF_WIDTH_MASK; | |
| 359 | 359 | diffFlags += x; |
| 360 | 360 | |
| 361 | 361 | /* "dc" query parameter determines lines of context */ |
| 362 | 362 | x = atoi(PD("dc","7")); |
| 363 | - if( x>DIFF_CONTEXT_MASK ) x = DIFF_CONTEXT_MASK; | |
| 363 | + if( x<0 || x>DIFF_CONTEXT_MASK ) x = DIFF_CONTEXT_MASK; | |
| 364 | 364 | diffFlags += x; |
| 365 | 365 | }else{ |
| 366 | 366 | /* In-line (non-side-by-side) diff */ |
| 367 | 367 | diffFlags = DIFF_INLINE | DIFF_IGNORE_EOLWS; |
| 368 | 368 | } |
| 369 | 369 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -353,16 +353,16 @@ | |
| 353 | int x; |
| 354 | diffFlags = DIFF_SIDEBYSIDE | DIFF_IGNORE_EOLWS; |
| 355 | |
| 356 | /* "dw" query parameter determines width of each column */ |
| 357 | x = atoi(PD("dw","80"))*(DIFF_CONTEXT_MASK+1); |
| 358 | if( x>DIFF_WIDTH_MASK ) x = DIFF_WIDTH_MASK; |
| 359 | diffFlags += x; |
| 360 | |
| 361 | /* "dc" query parameter determines lines of context */ |
| 362 | x = atoi(PD("dc","7")); |
| 363 | if( x>DIFF_CONTEXT_MASK ) x = DIFF_CONTEXT_MASK; |
| 364 | diffFlags += x; |
| 365 | }else{ |
| 366 | /* In-line (non-side-by-side) diff */ |
| 367 | diffFlags = DIFF_INLINE | DIFF_IGNORE_EOLWS; |
| 368 | } |
| 369 |
| --- src/info.c | |
| +++ src/info.c | |
| @@ -353,16 +353,16 @@ | |
| 353 | int x; |
| 354 | diffFlags = DIFF_SIDEBYSIDE | DIFF_IGNORE_EOLWS; |
| 355 | |
| 356 | /* "dw" query parameter determines width of each column */ |
| 357 | x = atoi(PD("dw","80"))*(DIFF_CONTEXT_MASK+1); |
| 358 | if( x<0 || x>DIFF_WIDTH_MASK ) x = DIFF_WIDTH_MASK; |
| 359 | diffFlags += x; |
| 360 | |
| 361 | /* "dc" query parameter determines lines of context */ |
| 362 | x = atoi(PD("dc","7")); |
| 363 | if( x<0 || x>DIFF_CONTEXT_MASK ) x = DIFF_CONTEXT_MASK; |
| 364 | diffFlags += x; |
| 365 | }else{ |
| 366 | /* In-line (non-side-by-side) diff */ |
| 367 | diffFlags = DIFF_INLINE | DIFF_IGNORE_EOLWS; |
| 368 | } |
| 369 |