Fossil SCM
Fixed a segfault in proc_command() caused by invalid inspection of an empty array.
Commit
f2d87242503d7a7dc90abf1e079af38f5aeb6b8e
Parent
66104f8b5d8278c…
1 file changed
+5
-3
+5
-3
| --- src/th_lang.c | ||
| +++ src/th_lang.c | ||
| @@ -467,13 +467,15 @@ | ||
| 467 | 467 | |
| 468 | 468 | /* If the last parameter in the parameter list is "args", then set the |
| 469 | 469 | ** ProcDefn.hasArgs flag. The "args" parameter does not require an |
| 470 | 470 | ** entry in the ProcDefn.azParam[] or ProcDefn.azDefault[] arrays. |
| 471 | 471 | */ |
| 472 | - if( anParam[nParam-1]==4 && 0==memcmp(azParam[nParam-1], "args", 4) ){ | |
| 473 | - p->hasArgs = 1; | |
| 474 | - nParam--; | |
| 472 | + if(nParam>0){ | |
| 473 | + if( anParam[nParam-1]==4 && 0==memcmp(azParam[nParam-1], "args", 4) ){ | |
| 474 | + p->hasArgs = 1; | |
| 475 | + nParam--; | |
| 476 | + } | |
| 475 | 477 | } |
| 476 | 478 | |
| 477 | 479 | p->nParam = nParam; |
| 478 | 480 | p->azParam = (char **)&p[1]; |
| 479 | 481 | p->anParam = (int *)&p->azParam[nParam]; |
| 480 | 482 |
| --- src/th_lang.c | |
| +++ src/th_lang.c | |
| @@ -467,13 +467,15 @@ | |
| 467 | |
| 468 | /* If the last parameter in the parameter list is "args", then set the |
| 469 | ** ProcDefn.hasArgs flag. The "args" parameter does not require an |
| 470 | ** entry in the ProcDefn.azParam[] or ProcDefn.azDefault[] arrays. |
| 471 | */ |
| 472 | if( anParam[nParam-1]==4 && 0==memcmp(azParam[nParam-1], "args", 4) ){ |
| 473 | p->hasArgs = 1; |
| 474 | nParam--; |
| 475 | } |
| 476 | |
| 477 | p->nParam = nParam; |
| 478 | p->azParam = (char **)&p[1]; |
| 479 | p->anParam = (int *)&p->azParam[nParam]; |
| 480 |
| --- src/th_lang.c | |
| +++ src/th_lang.c | |
| @@ -467,13 +467,15 @@ | |
| 467 | |
| 468 | /* If the last parameter in the parameter list is "args", then set the |
| 469 | ** ProcDefn.hasArgs flag. The "args" parameter does not require an |
| 470 | ** entry in the ProcDefn.azParam[] or ProcDefn.azDefault[] arrays. |
| 471 | */ |
| 472 | if(nParam>0){ |
| 473 | if( anParam[nParam-1]==4 && 0==memcmp(azParam[nParam-1], "args", 4) ){ |
| 474 | p->hasArgs = 1; |
| 475 | nParam--; |
| 476 | } |
| 477 | } |
| 478 | |
| 479 | p->nParam = nParam; |
| 480 | p->azParam = (char **)&p[1]; |
| 481 | p->anParam = (int *)&p->azParam[nParam]; |
| 482 |