Prevent command_to_be_logged from overflowing (#12947)
* prevent command_to_be_logged from overflowing * dont access with size
Emmanuel Vasilakis committed
May 18, 2022 at 17:15 UTC
7e29d5a90896c777d823c46a232fb0edf4f4525e
2 files changed
+5
-6
libnetdata/libnetdata.c
+4
-5
@@ -1111,14 +1111,13 @@ char *fgets_trim_len(char *buf, size_t buf_size, FILE *fp, size_t *len) {
1111
}
1112
1113
int vsnprintfz(char *dst, size_t n, const char *fmt, va_list args) {
1114
+ if(unlikely(!n)) return 0;
1115
+
1116
int size = vsnprintf(dst, n, fmt, args);
1117
+ dst[n - 1] = '\0';
1118
1116
- if (unlikely((size_t) size > n)) {
1117
- // truncated
1118
- size = (int)n;
1119
- }
1119
+ if (unlikely((size_t) size > n)) size = (int)n;
1120
1121
- dst[size] = '\0';
1121
return size;
1122
}
1123
libnetdata/popen/popen.c
+1
-1
@@ -400,4 +400,4 @@ int mypclose(FILE *fp, pid_t pid)
400
int netdata_spawn_waitpid(pid_t pid)
401
{
402
return custom_pclose(NULL, pid);
403
-}
\ No newline at end of file
403
+}