diff --git a/src/tsdb/src/tsdbFile.c b/src/tsdb/src/tsdbFile.c index 77d172893e5ee176e636c8f0e5f3ed15ed86be2e..91786de28a7de7e127f59936c19dde732c96f67f 100644 --- a/src/tsdb/src/tsdbFile.c +++ b/src/tsdb/src/tsdbFile.c @@ -683,19 +683,20 @@ int tsdbScanAndTryFixDFileSet(STsdbRepo *pRepo, SDFileSet *pSet) { } int tsdbParseDFilename(const char *fname, int *vid, int *fid, TSDB_FILE_T *ftype, uint32_t *_version) { - char *p = NULL; +#define MAX_SUFFIX_LEN 10 + char suffix[MAX_SUFFIX_LEN] = {0}; *_version = 0; *ftype = TSDB_FILE_MAX; - sscanf(fname, "v%df%d.%m[a-z]-ver%" PRIu32, vid, fid, &p, _version); + // "suffix" needs to be constrained by 1 less MAX_SUFFIX_LEN + sscanf(fname, "v%df%d.%9[a-z]-ver%" PRIu32, vid, fid, suffix, _version); for (TSDB_FILE_T i = 0; i < TSDB_FILE_MAX; i++) { - if (strcmp(p, TSDB_FNAME_SUFFIX[i]) == 0) { + if (strcmp(suffix, TSDB_FNAME_SUFFIX[i]) == 0) { *ftype = i; break; } } - tfree(p); return 0; }