fix(stream): check return value for snprintf
This commit is contained in:
parent
44cfecc402
commit
5a1e5b1549
|
@ -162,59 +162,61 @@ void snapFileDebugInfo(SBackendSnapFile2* pSnapFile) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t nBytes = snprintf(buf + strlen(buf), cap, "[");
|
|
||||||
if (nBytes <= 0 || nBytes >= cap) {
|
|
||||||
taosMemoryFree(buf);
|
|
||||||
stError("%s failed to write buf, reason:%s", STREAM_STATE_TRANSFER, tstrerror(TSDB_CODE_OUT_OF_RANGE));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t wlen = 0;
|
|
||||||
int32_t len = 0;
|
int32_t len = 0;
|
||||||
if (pSnapFile->pCurrent) {
|
int32_t wlen = 1;
|
||||||
len = snprintf(buf, cap,"current: %s,", pSnapFile->pCurrent);
|
|
||||||
if (len > 0) {
|
|
||||||
wlen += len;
|
|
||||||
} else {
|
|
||||||
stError("%s failed to build buf for debug, code: out of buffer", STREAM_STATE_TRANSFER);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pSnapFile->pMainfest) {
|
do {
|
||||||
len = snprintf(buf + wlen, cap - wlen, "MANIFEST: %s,", pSnapFile->pMainfest);
|
buf[0] = '[';
|
||||||
if (len > 0) {
|
if (pSnapFile->pCurrent) {
|
||||||
wlen += len;
|
len = snprintf(buf + wlen, cap - wlen, "current: %s,", pSnapFile->pCurrent);
|
||||||
} else {
|
if (len > 0 && len < (cap - wlen)) {
|
||||||
stError("%s failed to build buf for debug, code: out of buffer", STREAM_STATE_TRANSFER);
|
wlen += len;
|
||||||
|
} else {
|
||||||
|
stError("%s failed to build buf for debug, code: out of buffer", STREAM_STATE_TRANSFER);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (pSnapFile->pOptions) {
|
if (pSnapFile->pMainfest) {
|
||||||
len = snprintf(buf + wlen, cap - wlen, "options: %s,", pSnapFile->pOptions);
|
len = snprintf(buf + wlen, cap - wlen, "MANIFEST: %s,", pSnapFile->pMainfest);
|
||||||
if (len > 0) {
|
if (len > 0 && len < (cap - wlen)) {
|
||||||
wlen += len;
|
wlen += len;
|
||||||
} else {
|
} else {
|
||||||
stError("%s failed to build buf for debug, code: out of buffer", STREAM_STATE_TRANSFER);
|
stError("%s failed to build buf for debug, code: out of buffer", STREAM_STATE_TRANSFER);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (pSnapFile->pSst) {
|
if (pSnapFile->pOptions) {
|
||||||
for (int32_t i = 0; i < taosArrayGetSize(pSnapFile->pSst); i++) {
|
len = snprintf(buf + wlen, cap - wlen, "options: %s,", pSnapFile->pOptions);
|
||||||
char* name = taosArrayGetP(pSnapFile->pSst, i);
|
if (len > 0 && len < (cap - wlen)) {
|
||||||
if (strlen(buf) + strlen(name) < cap) {
|
wlen += len;
|
||||||
len = snprintf(buf + wlen, cap - wlen, "%s,", name);
|
} else {
|
||||||
if (len > 0) {
|
stError("%s failed to build buf for debug, code: out of buffer", STREAM_STATE_TRANSFER);
|
||||||
wlen += len;
|
break;
|
||||||
} else {
|
}
|
||||||
stError("%s failed to build buf for debug, code: out of buffer", STREAM_STATE_TRANSFER);
|
}
|
||||||
|
|
||||||
|
if (pSnapFile->pSst) {
|
||||||
|
for (int32_t i = 0; i < taosArrayGetSize(pSnapFile->pSst); i++) {
|
||||||
|
char* name = taosArrayGetP(pSnapFile->pSst, i);
|
||||||
|
if (strlen(buf) + strlen(name) < cap) {
|
||||||
|
len = snprintf(buf + wlen, cap - wlen, "%s,", name);
|
||||||
|
if (len > 0 && len < (cap - wlen)) {
|
||||||
|
wlen += len;
|
||||||
|
} else {
|
||||||
|
stError("%s failed to build buf for debug, code: out of buffer", STREAM_STATE_TRANSFER);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} while (0);
|
||||||
|
|
||||||
if ((strlen(buf)) < cap) {
|
if (wlen < cap) {
|
||||||
buf[wlen++] = ']';
|
buf[wlen] = ']';
|
||||||
}
|
}
|
||||||
|
buf[cap - 1] = '\0';
|
||||||
|
|
||||||
stInfo("%s %" PRId64 "-%" PRId64 " get file list: %s", STREAM_STATE_TRANSFER, pSnapFile->snapInfo.streamId,
|
stInfo("%s %" PRId64 "-%" PRId64 " get file list: %s", STREAM_STATE_TRANSFER, pSnapFile->snapInfo.streamId,
|
||||||
pSnapFile->snapInfo.taskId, buf);
|
pSnapFile->snapInfo.taskId, buf);
|
||||||
|
|
Loading…
Reference in New Issue