Fossil SCM

Squished a potential null pointer dereference in th.c caught by ubsan.

wyoung 2023-10-23 01:47 trunk
Commit 39cac07254e36503da0735ff7dd65dca162c6702e00c02d75a5d860c19ce49b2
1 file changed +3 -2
+3 -2
--- src/th.c
+++ src/th.c
@@ -245,13 +245,14 @@
245245
int nAdd
246246
){
247247
if( pBuffer->nBuf+nAdd > pBuffer->nBufAlloc ){
248248
thBufferWriteResize(interp, pBuffer, zAdd, nAdd);
249249
}else{
250
- char *z = pBuffer->zBuf + pBuffer->nBuf;
250
+ if( pBuffer->zBuf ){
251
+ memcpy(pBuffer->zBuf + pBuffer->nBuf, zAdd, nAdd);
252
+ }
251253
pBuffer->nBuf += nAdd;
252
- memcpy(z, zAdd, nAdd);
253254
}
254255
}
255256
#define thBufferWrite(a,b,c,d) thBufferWriteFast(a,b,(const char *)c,d)
256257
257258
/*
258259
--- 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

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button