Fossil SCM
Fix a memory allocation bug in the ZIP archive generator. Ticket [8d6efe4f927]
Commit
5b91887495c357fe2cae15e5ef268e904304bc0c
Parent
292e585661b0102…
1 file changed
+3
-3
+3
-3
| --- src/zip.c | ||
| +++ src/zip.c | ||
| @@ -108,12 +108,12 @@ | ||
| 108 | 108 | for(j=0; j<nDir; j++){ |
| 109 | 109 | if( strcmp(zName, azDir[j])==0 ) break; |
| 110 | 110 | } |
| 111 | 111 | if( j>=nDir ){ |
| 112 | 112 | nDir++; |
| 113 | - azDir = realloc(azDir, nDir); | |
| 114 | - azDir[j] = sqlite3_mprintf("%s", zName); | |
| 113 | + azDir = realloc(azDir, sizeof(azDir[0])*nDir); | |
| 114 | + azDir[j] = mprintf("%s", zName); | |
| 115 | 115 | zip_add_file(zName, 0); |
| 116 | 116 | } |
| 117 | 117 | zName[i+1] = c; |
| 118 | 118 | } |
| 119 | 119 | } |
| @@ -286,11 +286,11 @@ | ||
| 286 | 286 | blob_reset(&toc); |
| 287 | 287 | *pZip = body; |
| 288 | 288 | blob_zero(&body); |
| 289 | 289 | nEntry = 0; |
| 290 | 290 | for(i=0; i<nDir; i++){ |
| 291 | - sqlite3_free(azDir[i]); | |
| 291 | + free(azDir[i]); | |
| 292 | 292 | } |
| 293 | 293 | free(azDir); |
| 294 | 294 | nDir = 0; |
| 295 | 295 | azDir = 0; |
| 296 | 296 | } |
| 297 | 297 |
| --- src/zip.c | |
| +++ src/zip.c | |
| @@ -108,12 +108,12 @@ | |
| 108 | for(j=0; j<nDir; j++){ |
| 109 | if( strcmp(zName, azDir[j])==0 ) break; |
| 110 | } |
| 111 | if( j>=nDir ){ |
| 112 | nDir++; |
| 113 | azDir = realloc(azDir, nDir); |
| 114 | azDir[j] = sqlite3_mprintf("%s", zName); |
| 115 | zip_add_file(zName, 0); |
| 116 | } |
| 117 | zName[i+1] = c; |
| 118 | } |
| 119 | } |
| @@ -286,11 +286,11 @@ | |
| 286 | blob_reset(&toc); |
| 287 | *pZip = body; |
| 288 | blob_zero(&body); |
| 289 | nEntry = 0; |
| 290 | for(i=0; i<nDir; i++){ |
| 291 | sqlite3_free(azDir[i]); |
| 292 | } |
| 293 | free(azDir); |
| 294 | nDir = 0; |
| 295 | azDir = 0; |
| 296 | } |
| 297 |
| --- src/zip.c | |
| +++ src/zip.c | |
| @@ -108,12 +108,12 @@ | |
| 108 | for(j=0; j<nDir; j++){ |
| 109 | if( strcmp(zName, azDir[j])==0 ) break; |
| 110 | } |
| 111 | if( j>=nDir ){ |
| 112 | nDir++; |
| 113 | azDir = realloc(azDir, sizeof(azDir[0])*nDir); |
| 114 | azDir[j] = mprintf("%s", zName); |
| 115 | zip_add_file(zName, 0); |
| 116 | } |
| 117 | zName[i+1] = c; |
| 118 | } |
| 119 | } |
| @@ -286,11 +286,11 @@ | |
| 286 | blob_reset(&toc); |
| 287 | *pZip = body; |
| 288 | blob_zero(&body); |
| 289 | nEntry = 0; |
| 290 | for(i=0; i<nDir; i++){ |
| 291 | free(azDir[i]); |
| 292 | } |
| 293 | free(azDir); |
| 294 | nDir = 0; |
| 295 | azDir = 0; |
| 296 | } |
| 297 |