Fossil SCM
Squished a potential null pointer dereference in th.c caught by ubsan.
Commit
39cac07254e36503da0735ff7dd65dca162c6702e00c02d75a5d860c19ce49b2
Parent
dfa41afeab15817…
1 file changed
+3
-2
M
src/th.c
+3
-2
| --- src/th.c | ||
| +++ src/th.c | ||
| @@ -245,13 +245,14 @@ | ||
| 245 | 245 | int nAdd |
| 246 | 246 | ){ |
| 247 | 247 | if( pBuffer->nBuf+nAdd > pBuffer->nBufAlloc ){ |
| 248 | 248 | thBufferWriteResize(interp, pBuffer, zAdd, nAdd); |
| 249 | 249 | }else{ |
| 250 | - char *z = pBuffer->zBuf + pBuffer->nBuf; | |
| 250 | + if( pBuffer->zBuf ){ | |
| 251 | + memcpy(pBuffer->zBuf + pBuffer->nBuf, zAdd, nAdd); | |
| 252 | + } | |
| 251 | 253 | pBuffer->nBuf += nAdd; |
| 252 | - memcpy(z, zAdd, nAdd); | |
| 253 | 254 | } |
| 254 | 255 | } |
| 255 | 256 | #define thBufferWrite(a,b,c,d) thBufferWriteFast(a,b,(const char *)c,d) |
| 256 | 257 | |
| 257 | 258 | /* |
| 258 | 259 |
| --- src/th.c | |
| +++ src/th.c | |
| @@ -245,13 +245,14 @@ | |
| 245 | int nAdd |
| 246 | ){ |
| 247 | if( pBuffer->nBuf+nAdd > pBuffer->nBufAlloc ){ |
| 248 | thBufferWriteResize(interp, pBuffer, zAdd, nAdd); |
| 249 | }else{ |
| 250 | char *z = pBuffer->zBuf + pBuffer->nBuf; |
| 251 | pBuffer->nBuf += nAdd; |
| 252 | memcpy(z, zAdd, nAdd); |
| 253 | } |
| 254 | } |
| 255 | #define thBufferWrite(a,b,c,d) thBufferWriteFast(a,b,(const char *)c,d) |
| 256 | |
| 257 | /* |
| 258 |
| --- src/th.c | |
| +++ src/th.c | |
| @@ -245,13 +245,14 @@ | |
| 245 | int nAdd |
| 246 | ){ |
| 247 | if( pBuffer->nBuf+nAdd > pBuffer->nBufAlloc ){ |
| 248 | thBufferWriteResize(interp, pBuffer, zAdd, nAdd); |
| 249 | }else{ |
| 250 | if( pBuffer->zBuf ){ |
| 251 | memcpy(pBuffer->zBuf + pBuffer->nBuf, zAdd, nAdd); |
| 252 | } |
| 253 | pBuffer->nBuf += nAdd; |
| 254 | } |
| 255 | } |
| 256 | #define thBufferWrite(a,b,c,d) thBufferWriteFast(a,b,(const char *)c,d) |
| 257 | |
| 258 | /* |
| 259 |