diff --git a/source/libs/stream/src/streamCheckpoint.c b/source/libs/stream/src/streamCheckpoint.c index b27529d5b8..b30a3bdc50 100644 --- a/source/libs/stream/src/streamCheckpoint.c +++ b/source/libs/stream/src/streamCheckpoint.c @@ -467,7 +467,7 @@ int32_t streamTaskBuildCheckpoint(SStreamTask* pTask) { //} int uploadCheckpoint(char* id, char* path){ - if(id == NULL || path == NULL || strlen(id) == 0 || strlen(path) == 0){ + if(id == NULL || path == NULL || strlen(id) == 0 || strlen(path) == 0 || strlen(path) >= PATH_MAX){ stError("uploadCheckpoint parameters invalid"); return -1; } @@ -480,7 +480,7 @@ int uploadCheckpoint(char* id, char* path){ } int downloadCheckpoint(char* id, char* path){ - if(id == NULL || path == NULL || strlen(id) == 0 || strlen(path) == 0){ + if(id == NULL || path == NULL || strlen(id) == 0 || strlen(path) == 0 || strlen(path) >= PATH_MAX){ stError("downloadCheckpoint parameters invalid"); return -1; } diff --git a/source/util/src/rsync.c b/source/util/src/rsync.c index 6316be7f79..8c6bce66a0 100644 --- a/source/util/src/rsync.c +++ b/source/util/src/rsync.c @@ -152,13 +152,27 @@ void startRsync(){ } int uploadRsync(char* id, char* path){ +#ifdef WINDOWS + char pathTransform[PATH_MAX] = {0}; + changeDirFromWindowsToLinux(path, pathTransform); +#endif char command[PATH_MAX] = {0}; if(path[strlen(path) - 1] != '/'){ snprintf(command, PATH_MAX, "rsync -av --delete --timeout=10 --bwlimit=100000 %s/ rsync://%s/checkpoint/%s/", - path, tsSnodeIp, id); +#ifdef WINDOWS + pathTransform +#else + path +#endif + , tsSnodeIp, id); }else{ snprintf(command, PATH_MAX, "rsync -av --delete --timeout=10 --bwlimit=100000 %s rsync://%s/checkpoint/%s/", - path, tsSnodeIp, id); +#ifdef WINDOWS + pathTransform +#else + path +#endif + , tsSnodeIp, id); } int code = execCommand(command); @@ -171,9 +185,19 @@ int uploadRsync(char* id, char* path){ } int downloadRsync(char* id, char* path){ +#ifdef WINDOWS + char pathTransform[PATH_MAX] = {0}; + changeDirFromWindowsToLinux(path, pathTransform); +#endif char command[PATH_MAX] = {0}; snprintf(command, PATH_MAX, "rsync -av --timeout=10 --bwlimit=100000 rsync://%s/checkpoint/%s/ %s", - tsSnodeIp, id, path); + tsSnodeIp, id, +#ifdef WINDOWS + pathTransform +#else + path +#endif + ); int code = execCommand(command); if(code != 0){