mirror of
https://github.com/Llewellynvdm/conky.git
synced 2024-11-17 18:45:10 +00:00
* Replacing strdup() with strndup() throughout
(this is probably going to break a few things) git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky1@1100 7f574dfc-610e-0410-a909-a81674777703
This commit is contained in:
parent
d46bcb0945
commit
a6a4a4c548
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
2008-04-02
|
2008-04-02
|
||||||
* Added patch to use mail_spool correctly (thanks Kapil)
|
* Added patch to use mail_spool correctly (thanks Kapil)
|
||||||
|
* Replacing strdup() with strndup() throughout
|
||||||
|
|
||||||
2008-04-01
|
2008-04-01
|
||||||
* Fixed segfault when configuration doesn't contain TEXT block (thanks
|
* Fixed segfault when configuration doesn't contain TEXT block (thanks
|
||||||
|
@ -143,7 +143,7 @@ struct net_stat *get_net_stat(const char *dev)
|
|||||||
if (i == 16) {
|
if (i == 16) {
|
||||||
for (i = 0; i < 16; i++) {
|
for (i = 0; i < 16; i++) {
|
||||||
if (netstats[i].dev == 0) {
|
if (netstats[i].dev == 0) {
|
||||||
netstats[i].dev = strdup(dev);
|
netstats[i].dev = strndup(dev, text_buffer_size);
|
||||||
return &netstats[i];
|
return &netstats[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -195,7 +195,7 @@ void update_dns_data(void)
|
|||||||
line[strlen(line) - 1] = '\0'; // remove trailing newline
|
line[strlen(line) - 1] = '\0'; // remove trailing newline
|
||||||
data->nscount++;
|
data->nscount++;
|
||||||
data->ns_list = realloc(data->ns_list, data->nscount * sizeof(char *));
|
data->ns_list = realloc(data->ns_list, data->nscount * sizeof(char *));
|
||||||
data->ns_list[data->nscount - 1] = strdup(line + 11);
|
data->ns_list[data->nscount - 1] = strndup(line + 11, text_buffer_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
OUT:
|
OUT:
|
||||||
|
146
src/conky.c
146
src/conky.c
@ -216,7 +216,7 @@ int addfont(const char *data_in)
|
|||||||
}
|
}
|
||||||
// must account for null terminator
|
// must account for null terminator
|
||||||
if (strlen(data_in) < DEFAULT_TEXT_BUFFER_SIZE) {
|
if (strlen(data_in) < DEFAULT_TEXT_BUFFER_SIZE) {
|
||||||
strncpy(fonts[font_count].name, data_in, DEFAULT_TEXT_BUFFER_SIZE);
|
strncpy(fonts[font_count].name, data_in, text_buffer_size);
|
||||||
#ifdef XFT
|
#ifdef XFT
|
||||||
fonts[font_count].font_alpha = 0xffff;
|
fonts[font_count].font_alpha = 0xffff;
|
||||||
#endif
|
#endif
|
||||||
@ -237,7 +237,7 @@ void set_first_font(const char *data_in)
|
|||||||
font_count++;
|
font_count++;
|
||||||
}
|
}
|
||||||
if (strlen(data_in) > 1) {
|
if (strlen(data_in) > 1) {
|
||||||
strncpy(fonts[0].name, data_in, DEFAULT_TEXT_BUFFER_SIZE - 1);
|
strncpy(fonts[0].name, data_in, text_buffer_size);
|
||||||
#ifdef XFT
|
#ifdef XFT
|
||||||
fonts[0].font_alpha = 0xffff;
|
fonts[0].font_alpha = 0xffff;
|
||||||
#endif
|
#endif
|
||||||
@ -675,7 +675,7 @@ static const char *scan_bar(const char *args, int *w, int *h)
|
|||||||
static char *scan_font(const char *args)
|
static char *scan_font(const char *args)
|
||||||
{
|
{
|
||||||
if (args && *args) {
|
if (args && *args) {
|
||||||
return strdup(args);
|
return strndup(args, text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -814,12 +814,12 @@ static char *scan_graph(const char *args, int *w, int *h,
|
|||||||
}
|
}
|
||||||
if (sscanf(args, "%63s %d,%d %x %x %u", buf, h, w, first_colour,
|
if (sscanf(args, "%63s %d,%d %x %x %u", buf, h, w, first_colour,
|
||||||
last_colour, scale) == 6) {
|
last_colour, scale) == 6) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
*scale = 0;
|
*scale = 0;
|
||||||
if (sscanf(args, "%63s %d,%d %x %x", buf, h, w, first_colour,
|
if (sscanf(args, "%63s %d,%d %x %x", buf, h, w, first_colour,
|
||||||
last_colour) == 5) {
|
last_colour) == 5) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
*h = 25;
|
*h = 25;
|
||||||
@ -833,11 +833,11 @@ static char *scan_graph(const char *args, int *w, int *h,
|
|||||||
}
|
}
|
||||||
if (sscanf(args, "%63s %x %x %u", buf, first_colour, last_colour,
|
if (sscanf(args, "%63s %x %x %u", buf, first_colour, last_colour,
|
||||||
scale) == 4) {
|
scale) == 4) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
*scale = 0;
|
*scale = 0;
|
||||||
if (sscanf(args, "%63s %x %x", buf, first_colour, last_colour) == 3) {
|
if (sscanf(args, "%63s %x %x", buf, first_colour, last_colour) == 3) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
*first_colour = 0;
|
*first_colour = 0;
|
||||||
@ -855,13 +855,13 @@ static char *scan_graph(const char *args, int *w, int *h,
|
|||||||
sscanf(args, "%63s %d,%d", buf, h, w);
|
sscanf(args, "%63s %d,%d", buf, h, w);
|
||||||
}
|
}
|
||||||
|
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf[0] == '\0') {
|
if (buf[0] == '\0') {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2428,7 +2428,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
} else {
|
} else {
|
||||||
strcpy(bat, "BAT0");
|
strcpy(bat, "BAT0");
|
||||||
}
|
}
|
||||||
obj->data.s = strdup(bat);
|
obj->data.s = strndup(bat, text_buffer_size);
|
||||||
END OBJ(battery_time, 0)
|
END OBJ(battery_time, 0)
|
||||||
char bat[64];
|
char bat[64];
|
||||||
|
|
||||||
@ -2437,7 +2437,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
} else {
|
} else {
|
||||||
strcpy(bat, "BAT0");
|
strcpy(bat, "BAT0");
|
||||||
}
|
}
|
||||||
obj->data.s = strdup(bat);
|
obj->data.s = strndup(bat, text_buffer_size);
|
||||||
END OBJ(battery_percent, 0)
|
END OBJ(battery_percent, 0)
|
||||||
char bat[64];
|
char bat[64];
|
||||||
|
|
||||||
@ -2446,7 +2446,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
} else {
|
} else {
|
||||||
strcpy(bat, "BAT0");
|
strcpy(bat, "BAT0");
|
||||||
}
|
}
|
||||||
obj->data.s = strdup(bat);
|
obj->data.s = strndup(bat, text_buffer_size);
|
||||||
END OBJ(battery_bar, 0)
|
END OBJ(battery_bar, 0)
|
||||||
char bat[64];
|
char bat[64];
|
||||||
obj->b = 6;
|
obj->b = 6;
|
||||||
@ -2456,13 +2456,13 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
} else {
|
} else {
|
||||||
strcpy(bat, "BAT0");
|
strcpy(bat, "BAT0");
|
||||||
}
|
}
|
||||||
obj->data.s = strdup(bat);
|
obj->data.s = strndup(bat, text_buffer_size);
|
||||||
#endif /* !__OpenBSD__ */
|
#endif /* !__OpenBSD__ */
|
||||||
|
|
||||||
#if defined(__linux__)
|
#if defined(__linux__)
|
||||||
END OBJ(disk_protect, 0)
|
END OBJ(disk_protect, 0)
|
||||||
if (arg)
|
if (arg)
|
||||||
obj->data.s = strdup(DEV_NAME(arg));
|
obj->data.s = strndup(DEV_NAME(arg), text_buffer_size);
|
||||||
else
|
else
|
||||||
CRIT_ERR("disk_protect needs an argument");
|
CRIT_ERR("disk_protect needs an argument");
|
||||||
END OBJ(i8k_version, INFO_I8K)
|
END OBJ(i8k_version, INFO_I8K)
|
||||||
@ -2497,7 +2497,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("if_up needs an argument");
|
ERR("if_up needs an argument");
|
||||||
obj->data.ifblock.s = 0;
|
obj->data.ifblock.s = 0;
|
||||||
} else
|
} else
|
||||||
obj->data.ifblock.s = strdup(arg);
|
obj->data.ifblock.s = strndup(arg, text_buffer_size);
|
||||||
blockstart[blockdepth] = object_count;
|
blockstart[blockdepth] = object_count;
|
||||||
obj->data.ifblock.pos = object_count + 2;
|
obj->data.ifblock.pos = object_count + 2;
|
||||||
blockdepth++;
|
blockdepth++;
|
||||||
@ -2513,7 +2513,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
CRIT_ERR("get_ioscheduler needs an argument (e.g. hda)");
|
CRIT_ERR("get_ioscheduler needs an argument (e.g. hda)");
|
||||||
obj->data.s = 0;
|
obj->data.s = 0;
|
||||||
} else
|
} else
|
||||||
obj->data.s = strdup(DEV_NAME(arg));
|
obj->data.s = strndup(DEV_NAME(arg), text_buffer_size);
|
||||||
END OBJ(laptop_mode, 0)
|
END OBJ(laptop_mode, 0)
|
||||||
END OBJ(pb_battery, 0)
|
END OBJ(pb_battery, 0)
|
||||||
if (arg && strcmp(arg, "status") == 0) {
|
if (arg && strcmp(arg, "status") == 0) {
|
||||||
@ -2718,16 +2718,16 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("$endif: no matching $if_*");
|
ERR("$endif: no matching $if_*");
|
||||||
}
|
}
|
||||||
END OBJ(image, 0)
|
END OBJ(image, 0)
|
||||||
obj->data.s = strdup(arg ? arg : "");
|
obj->data.s = strndup(arg ? arg : "", text_buffer_size);
|
||||||
#ifdef HAVE_POPEN
|
#ifdef HAVE_POPEN
|
||||||
END OBJ(exec, 0)
|
END OBJ(exec, 0)
|
||||||
obj->data.s = strdup(arg ? arg : "");
|
obj->data.s = strndup(arg ? arg : "", text_buffer_size);
|
||||||
END OBJ(execp, 0)
|
END OBJ(execp, 0)
|
||||||
obj->data.s = strdup(arg ? arg : "");
|
obj->data.s = strndup(arg ? arg : "", text_buffer_size);
|
||||||
END OBJ(execbar, 0)
|
END OBJ(execbar, 0)
|
||||||
obj->data.s = strdup(arg ? arg : "");
|
obj->data.s = strndup(arg ? arg : "", text_buffer_size);
|
||||||
END OBJ(execgraph, 0)
|
END OBJ(execgraph, 0)
|
||||||
obj->data.s = strdup(arg ? arg : "");
|
obj->data.s = strndup(arg ? arg : "", text_buffer_size);
|
||||||
END OBJ(execibar, 0)
|
END OBJ(execibar, 0)
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
@ -2737,9 +2737,9 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("${execibar <interval> command}");
|
ERR("${execibar <interval> command}");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
snprintf(buf, 256, "${%s}", s);
|
snprintf(buf, 256, "${%s}", s);
|
||||||
obj->data.s = strdup(buf);
|
obj->data.s = strndup(buf, text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
obj->data.execi.cmd = strdup(arg + n);
|
obj->data.execi.cmd = strndup(arg + n, text_buffer_size);
|
||||||
}
|
}
|
||||||
END OBJ(execigraph, 0)
|
END OBJ(execigraph, 0)
|
||||||
int n;
|
int n;
|
||||||
@ -2750,9 +2750,9 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("${execigraph <interval> command}");
|
ERR("${execigraph <interval> command}");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
snprintf(buf, 256, "${%s}", s);
|
snprintf(buf, 256, "${%s}", s);
|
||||||
obj->data.s = strdup(buf);
|
obj->data.s = strndup(buf, text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
obj->data.execi.cmd = strdup(arg + n);
|
obj->data.execi.cmd = strndup(arg + n, text_buffer_size);
|
||||||
}
|
}
|
||||||
END OBJ(execi, 0)
|
END OBJ(execi, 0)
|
||||||
int n;
|
int n;
|
||||||
@ -2763,9 +2763,9 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("${execi <interval> command}");
|
ERR("${execi <interval> command}");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
snprintf(buf, 256, "${%s}", s);
|
snprintf(buf, 256, "${%s}", s);
|
||||||
obj->data.s = strdup(buf);
|
obj->data.s = strndup(buf, text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
obj->data.execi.cmd = strdup(arg + n);
|
obj->data.execi.cmd = strndup(arg + n, text_buffer_size);
|
||||||
obj->data.execi.buffer = malloc(text_buffer_size);
|
obj->data.execi.buffer = malloc(text_buffer_size);
|
||||||
}
|
}
|
||||||
END OBJ(execpi, 0)
|
END OBJ(execpi, 0)
|
||||||
@ -2777,9 +2777,9 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("${execi <interval> command}");
|
ERR("${execi <interval> command}");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
snprintf(buf, 256, "${%s}", s);
|
snprintf(buf, 256, "${%s}", s);
|
||||||
obj->data.s = strdup(buf);
|
obj->data.s = strndup(buf, text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
obj->data.execi.cmd = strdup(arg + n);
|
obj->data.execi.cmd = strndup(arg + n, text_buffer_size);
|
||||||
obj->data.execi.buffer = malloc(text_buffer_size);
|
obj->data.execi.buffer = malloc(text_buffer_size);
|
||||||
}
|
}
|
||||||
END OBJ(texeci, 0)
|
END OBJ(texeci, 0)
|
||||||
@ -2791,9 +2791,9 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("${texeci <interval> command}");
|
ERR("${texeci <interval> command}");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
snprintf(buf, 256, "${%s}", s);
|
snprintf(buf, 256, "${%s}", s);
|
||||||
obj->data.s = strdup(buf);
|
obj->data.s = strndup(buf, text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
obj->data.texeci.cmd = strdup(arg + n);
|
obj->data.texeci.cmd = strndup(arg + n, text_buffer_size);
|
||||||
obj->data.texeci.buffer = malloc(text_buffer_size);
|
obj->data.texeci.buffer = malloc(text_buffer_size);
|
||||||
}
|
}
|
||||||
obj->data.texeci.p_timed_thread = NULL;
|
obj->data.texeci.p_timed_thread = NULL;
|
||||||
@ -2813,9 +2813,9 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
|
|
||||||
pclose(fp);
|
pclose(fp);
|
||||||
|
|
||||||
obj->data.s = strdup(buf);
|
obj->data.s = strndup(buf, text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
obj->data.s = strdup("");
|
obj->data.s = strndup("", text_buffer_size);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
END OBJ(fs_bar, INFO_FS)
|
END OBJ(fs_bar, INFO_FS)
|
||||||
@ -2888,7 +2888,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
if (!arg) {
|
if (!arg) {
|
||||||
ERR("goto needs arguments");
|
ERR("goto needs arguments");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
obj->data.s = strdup("${goto}");
|
obj->data.s = strndup("${goto}", text_buffer_size);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2916,7 +2916,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
if (!arg) {
|
if (!arg) {
|
||||||
ERR("i2c needs arguments");
|
ERR("i2c needs arguments");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
// obj->data.s = strdup("${i2c}");
|
// obj->data.s = strndup("${i2c}", text_buffer_size);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2987,7 +2987,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
if (!arg) {
|
if (!arg) {
|
||||||
ERR("top needs arguments");
|
ERR("top needs arguments");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
// obj->data.s = strdup("${top}");
|
// obj->data.s = strndup("${top}", text_buffer_size);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (sscanf(arg, "%63s %i", buf, &n) == 2) {
|
if (sscanf(arg, "%63s %i", buf, &n) == 2) {
|
||||||
@ -3027,7 +3027,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
if (!arg) {
|
if (!arg) {
|
||||||
ERR("top_mem needs arguments");
|
ERR("top_mem needs arguments");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
obj->data.s = strdup("${top_mem}");
|
obj->data.s = strndup("${top_mem}", text_buffer_size);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (sscanf(arg, "%63s %i", buf, &n) == 2) {
|
if (sscanf(arg, "%63s %i", buf, &n) == 2) {
|
||||||
@ -3082,7 +3082,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
if (!arg) {
|
if (!arg) {
|
||||||
ERR("tail needs arguments");
|
ERR("tail needs arguments");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
obj->data.s = strdup("${tail}");
|
obj->data.s = strndup("${tail}", text_buffer_size);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (sscanf(arg, "%63s %i %i", buf, &n1, &n2) == 2) {
|
if (sscanf(arg, "%63s %i %i", buf, &n1, &n2) == 2) {
|
||||||
@ -3184,7 +3184,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
if (!arg) {
|
if (!arg) {
|
||||||
ERR("head needs arguments");
|
ERR("head needs arguments");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
obj->data.s = strdup("${head}");
|
obj->data.s = strndup("${head}", text_buffer_size);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (sscanf(arg, "%63s %i %i", buf, &n1, &n2) == 2) {
|
if (sscanf(arg, "%63s %i %i", buf, &n1, &n2) == 2) {
|
||||||
@ -3265,7 +3265,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("if_empty needs an argument");
|
ERR("if_empty needs an argument");
|
||||||
obj->data.ifblock.s = 0;
|
obj->data.ifblock.s = 0;
|
||||||
} else {
|
} else {
|
||||||
obj->data.ifblock.s = strdup(arg);
|
obj->data.ifblock.s = strndup(arg, text_buffer_size);
|
||||||
}
|
}
|
||||||
blockstart[blockdepth] = object_count;
|
blockstart[blockdepth] = object_count;
|
||||||
obj->data.ifblock.pos = object_count + 2;
|
obj->data.ifblock.pos = object_count + 2;
|
||||||
@ -3283,11 +3283,11 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
int r = sscanf(arg, "%255s %255[^\n]", buf1, buf2);
|
int r = sscanf(arg, "%255s %255[^\n]", buf1, buf2);
|
||||||
|
|
||||||
if (r == 1) {
|
if (r == 1) {
|
||||||
obj->data.ifblock.s = strdup(buf1);
|
obj->data.ifblock.s = strndup(buf1, text_buffer_size);
|
||||||
obj->data.ifblock.str = NULL;
|
obj->data.ifblock.str = NULL;
|
||||||
} else {
|
} else {
|
||||||
obj->data.ifblock.s = strdup(buf1);
|
obj->data.ifblock.s = strndup(buf1, text_buffer_size);
|
||||||
obj->data.ifblock.str = strdup(buf2);
|
obj->data.ifblock.str = strndup(buf2, text_buffer_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
blockstart[blockdepth] = object_count;
|
blockstart[blockdepth] = object_count;
|
||||||
@ -3301,7 +3301,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("if_mounted needs an argument");
|
ERR("if_mounted needs an argument");
|
||||||
obj->data.ifblock.s = 0;
|
obj->data.ifblock.s = 0;
|
||||||
} else {
|
} else {
|
||||||
obj->data.ifblock.s = strdup(arg);
|
obj->data.ifblock.s = strndup(arg, text_buffer_size);
|
||||||
}
|
}
|
||||||
blockstart[blockdepth] = object_count;
|
blockstart[blockdepth] = object_count;
|
||||||
obj->data.ifblock.pos = object_count + 2;
|
obj->data.ifblock.pos = object_count + 2;
|
||||||
@ -3314,7 +3314,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
char buf[256];
|
char buf[256];
|
||||||
|
|
||||||
snprintf(buf, 256, "pidof %s >/dev/null", arg);
|
snprintf(buf, 256, "pidof %s >/dev/null", arg);
|
||||||
obj->data.ifblock.s = strdup(buf);
|
obj->data.ifblock.s = strndup(buf, text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
ERR("if_running needs an argument");
|
ERR("if_running needs an argument");
|
||||||
obj->data.ifblock.s = 0;
|
obj->data.ifblock.s = 0;
|
||||||
@ -3344,7 +3344,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
}
|
}
|
||||||
|
|
||||||
variable_substitute(box, dst, sizeof(dst));
|
variable_substitute(box, dst, sizeof(dst));
|
||||||
obj->data.local_mail.box = strdup(dst);
|
obj->data.local_mail.box = strndup(dst, text_buffer_size);
|
||||||
obj->data.local_mail.interval = n1;
|
obj->data.local_mail.interval = n1;
|
||||||
END OBJ(mboxscan, 0)
|
END OBJ(mboxscan, 0)
|
||||||
obj->data.mboxscan.args = (char *) malloc(text_buffer_size);
|
obj->data.mboxscan.args = (char *) malloc(text_buffer_size);
|
||||||
@ -3399,7 +3399,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
}
|
}
|
||||||
|
|
||||||
variable_substitute(box, dst, sizeof(dst));
|
variable_substitute(box, dst, sizeof(dst));
|
||||||
obj->data.local_mail.box = strdup(dst);
|
obj->data.local_mail.box = strndup(dst, text_buffer_size);
|
||||||
obj->data.local_mail.interval = n1;
|
obj->data.local_mail.interval = n1;
|
||||||
END OBJ(nodename, 0)
|
END OBJ(nodename, 0)
|
||||||
END OBJ(processes, INFO_PROCS)
|
END OBJ(processes, INFO_PROCS)
|
||||||
@ -3444,9 +3444,9 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
&obj->data.sysfs.arg, obj->data.sysfs.devtype);
|
&obj->data.sysfs.arg, obj->data.sysfs.devtype);
|
||||||
#endif
|
#endif
|
||||||
END OBJ(time, 0)
|
END OBJ(time, 0)
|
||||||
obj->data.s = strdup(arg ? arg : "%F %T");
|
obj->data.s = strndup(arg ? arg : "%F %T", text_buffer_size);
|
||||||
END OBJ(utime, 0)
|
END OBJ(utime, 0)
|
||||||
obj->data.s = strdup(arg ? arg : "%F %T");
|
obj->data.s = strndup(arg ? arg : "%F %T", text_buffer_size);
|
||||||
END OBJ(tztime, 0)
|
END OBJ(tztime, 0)
|
||||||
char buf1[256], buf2[256], *fmt, *tz;
|
char buf1[256], buf2[256], *fmt, *tz;
|
||||||
|
|
||||||
@ -3462,8 +3462,8 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
obj->data.tztime.fmt = strdup(fmt ? fmt : "%F %T");
|
obj->data.tztime.fmt = strndup(fmt ? fmt : "%F %T", text_buffer_size);
|
||||||
obj->data.tztime.tz = tz ? strdup(tz) : NULL;
|
obj->data.tztime.tz = tz ? strndup(tz, text_buffer_size) : NULL;
|
||||||
#ifdef HAVE_ICONV
|
#ifdef HAVE_ICONV
|
||||||
END OBJ(iconv_start, 0)
|
END OBJ(iconv_start, 0)
|
||||||
if (iconv_converting) {
|
if (iconv_converting) {
|
||||||
@ -3587,7 +3587,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
#ifdef SMAPI
|
#ifdef SMAPI
|
||||||
END OBJ(smapi, 0)
|
END OBJ(smapi, 0)
|
||||||
if (arg)
|
if (arg)
|
||||||
obj->data.s = strdup(arg);
|
obj->data.s = strndup(arg, text_buffer_size);
|
||||||
else
|
else
|
||||||
ERR("smapi needs an argument");
|
ERR("smapi needs an argument");
|
||||||
END OBJ(if_smapi_bat_installed, 0)
|
END OBJ(if_smapi_bat_installed, 0)
|
||||||
@ -3598,13 +3598,13 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("if_smapi_bat_installed needs an argument");
|
ERR("if_smapi_bat_installed needs an argument");
|
||||||
obj->data.ifblock.s = 0;
|
obj->data.ifblock.s = 0;
|
||||||
} else
|
} else
|
||||||
obj->data.ifblock.s = strdup(arg);
|
obj->data.ifblock.s = strndup(arg, text_buffer_size);
|
||||||
blockstart[blockdepth] = object_count;
|
blockstart[blockdepth] = object_count;
|
||||||
obj->data.ifblock.pos = object_count + 2;
|
obj->data.ifblock.pos = object_count + 2;
|
||||||
blockdepth++;
|
blockdepth++;
|
||||||
END OBJ(smapi_bat_perc, 0)
|
END OBJ(smapi_bat_perc, 0)
|
||||||
if (arg)
|
if (arg)
|
||||||
obj->data.s = strdup(arg);
|
obj->data.s = strndup(arg, text_buffer_size);
|
||||||
else
|
else
|
||||||
ERR("smapi_bat_perc needs an argument");
|
ERR("smapi_bat_perc needs an argument");
|
||||||
END OBJ(smapi_bat_bar, 0)
|
END OBJ(smapi_bat_bar, 0)
|
||||||
@ -3735,7 +3735,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
&obj->data.hddtemp.addr, &obj->data.hddtemp.port)) {
|
&obj->data.hddtemp.addr, &obj->data.hddtemp.port)) {
|
||||||
ERR("hddtemp needs arguments");
|
ERR("hddtemp needs arguments");
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
obj->data.s = strdup("${hddtemp}");
|
obj->data.s = strndup("${hddtemp}", text_buffer_size);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -3835,7 +3835,7 @@ static struct text_object *construct_text_object(const char *s,
|
|||||||
ERR("unknown variable %s", s);
|
ERR("unknown variable %s", s);
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
snprintf(buf, 256, "${%s}", s);
|
snprintf(buf, 256, "${%s}", s);
|
||||||
obj->data.s = strdup(buf);
|
obj->data.s = strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
#undef OBJ
|
#undef OBJ
|
||||||
|
|
||||||
@ -3853,7 +3853,7 @@ static struct text_object *create_plain_text(const char *s)
|
|||||||
obj = new_text_object_internal();
|
obj = new_text_object_internal();
|
||||||
|
|
||||||
obj->type = OBJ_text;
|
obj->type = OBJ_text;
|
||||||
obj->data.s = strdup(s);
|
obj->data.s = strndup(s, text_buffer_size);
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3864,7 +3864,7 @@ static struct text_object_list *extract_variable_text_internal(const char *const
|
|||||||
char *p, *s, *orig_p;
|
char *p, *s, *orig_p;
|
||||||
long line;
|
long line;
|
||||||
|
|
||||||
p = strdup(const_p);
|
p = strndup(const_p, max_user_text);
|
||||||
s = orig_p = p;
|
s = orig_p = p;
|
||||||
|
|
||||||
retval = malloc(sizeof(struct text_object_list));
|
retval = malloc(sizeof(struct text_object_list));
|
||||||
@ -4145,30 +4145,30 @@ char *format_time(unsigned long timeval, const int width)
|
|||||||
nt /= 60; // total minutes
|
nt /= 60; // total minutes
|
||||||
if (width >= snprintf(buf, sizeof buf, "%lu:%02u.%02u",
|
if (width >= snprintf(buf, sizeof buf, "%lu:%02u.%02u",
|
||||||
nt, nn, cc)) {
|
nt, nn, cc)) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (width >= snprintf(buf, sizeof buf, "%lu:%02u", nt, nn)) {
|
if (width >= snprintf(buf, sizeof buf, "%lu:%02u", nt, nn)) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
nn = nt % 60; // minutes past the hour
|
nn = nt % 60; // minutes past the hour
|
||||||
nt /= 60; // total hours
|
nt /= 60; // total hours
|
||||||
if (width >= snprintf(buf, sizeof buf, "%lu,%02u", nt, nn)) {
|
if (width >= snprintf(buf, sizeof buf, "%lu,%02u", nt, nn)) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
nn = nt; // now also hours
|
nn = nt; // now also hours
|
||||||
if (width >= snprintf(buf, sizeof buf, "%uh", nn)) {
|
if (width >= snprintf(buf, sizeof buf, "%uh", nn)) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
nn /= 24; // now days
|
nn /= 24; // now days
|
||||||
if (width >= snprintf(buf, sizeof buf, "%ud", nn)) {
|
if (width >= snprintf(buf, sizeof buf, "%ud", nn)) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
nn /= 7; // now weeks
|
nn /= 7; // now weeks
|
||||||
if (width >= snprintf(buf, sizeof buf, "%uw", nn)) {
|
if (width >= snprintf(buf, sizeof buf, "%uw", nn)) {
|
||||||
return strdup(buf);
|
return strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
// well shoot, this outta' fit...
|
// well shoot, this outta' fit...
|
||||||
return strdup("<inf>");
|
return strndup("<inf>", text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void generate_text_internal(char *p, int p_max_size,
|
static void generate_text_internal(char *p, int p_max_size,
|
||||||
@ -6294,7 +6294,7 @@ static inline int get_string_width_special(char *s)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
p = strdup(s);
|
p = strndup(s, text_buffer_size);
|
||||||
final = p;
|
final = p;
|
||||||
|
|
||||||
while (*p) {
|
while (*p) {
|
||||||
@ -7779,7 +7779,7 @@ static void set_default_configurations(void)
|
|||||||
|
|
||||||
variable_substitute(MAIL_FILE, buf, 256);
|
variable_substitute(MAIL_FILE, buf, 256);
|
||||||
if (buf[0] != '\0') {
|
if (buf[0] != '\0') {
|
||||||
current_mail_spool = strdup(buf);
|
current_mail_spool = strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8193,7 +8193,7 @@ static void load_config_file(const char *f)
|
|||||||
if (current_mail_spool) {
|
if (current_mail_spool) {
|
||||||
free(current_mail_spool);
|
free(current_mail_spool);
|
||||||
}
|
}
|
||||||
current_mail_spool = strdup(buffer);
|
current_mail_spool = strndup(buffer, text_buffer_size);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
CONF_ERR;
|
CONF_ERR;
|
||||||
@ -8541,7 +8541,7 @@ int main(int argc, char **argv)
|
|||||||
if (current_config) {
|
if (current_config) {
|
||||||
free(current_config);
|
free(current_config);
|
||||||
}
|
}
|
||||||
current_config = strdup(optarg);
|
current_config = strndup(optarg, max_user_text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'h':
|
case 'h':
|
||||||
@ -8609,13 +8609,13 @@ int main(int argc, char **argv)
|
|||||||
/* Try to use personal config file first */
|
/* Try to use personal config file first */
|
||||||
variable_substitute(CONFIG_FILE, buf, sizeof(buf));
|
variable_substitute(CONFIG_FILE, buf, sizeof(buf));
|
||||||
if (buf[0] && (fp = fopen(buf, "r"))) {
|
if (buf[0] && (fp = fopen(buf, "r"))) {
|
||||||
current_config = strdup(buf);
|
current_config = strndup(buf, max_user_text);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Try to use system config file if personal config not readable */
|
/* Try to use system config file if personal config not readable */
|
||||||
if (!current_config && (fp = fopen(SYSTEM_CONFIG_FILE, "r"))) {
|
if (!current_config && (fp = fopen(SYSTEM_CONFIG_FILE, "r"))) {
|
||||||
current_config = strdup(SYSTEM_CONFIG_FILE);
|
current_config = strndup(SYSTEM_CONFIG_FILE, max_user_text);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -8639,7 +8639,7 @@ int main(int argc, char **argv)
|
|||||||
variable_substitute(MAIL_FILE, buf, 256);
|
variable_substitute(MAIL_FILE, buf, 256);
|
||||||
|
|
||||||
if (buf[0] != '\0') {
|
if (buf[0] != '\0') {
|
||||||
current_mail_spool = strdup(buf);
|
current_mail_spool = strndup(buf, text_buffer_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -8696,7 +8696,7 @@ int main(int argc, char **argv)
|
|||||||
free(text);
|
free(text);
|
||||||
text = 0;
|
text = 0;
|
||||||
}
|
}
|
||||||
text = strdup(optarg);
|
text = strndup(optarg, max_user_text);
|
||||||
convert_escapes(text);
|
convert_escapes(text);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -760,7 +760,7 @@ inline void proc_find_top(struct process **cpu, struct process **mem)
|
|||||||
for (i = 0; i < n_processes; i++) {
|
for (i = 0; i < n_processes; i++) {
|
||||||
if (!((p[i].ki_flag & P_SYSTEM)) && p[i].ki_comm != NULL) {
|
if (!((p[i].ki_flag & P_SYSTEM)) && p[i].ki_comm != NULL) {
|
||||||
processes[j].pid = p[i].ki_pid;
|
processes[j].pid = p[i].ki_pid;
|
||||||
processes[j].name = strdup(p[i].ki_comm);
|
processes[j].name = strndup(p[i].ki_comm, text_buffer_size);
|
||||||
processes[j].amount = 100.0 * p[i].ki_pctcpu / FSCALE;
|
processes[j].amount = 100.0 * p[i].ki_pctcpu / FSCALE;
|
||||||
processes[j].totalmem = (float) (p[i].ki_rssize /
|
processes[j].totalmem = (float) (p[i].ki_rssize /
|
||||||
(float) total_pages) * 100.0;
|
(float) total_pages) * 100.0;
|
||||||
@ -778,7 +778,7 @@ inline void proc_find_top(struct process **cpu, struct process **mem)
|
|||||||
tmp->pid = processes[i].pid;
|
tmp->pid = processes[i].pid;
|
||||||
tmp->amount = processes[i].amount;
|
tmp->amount = processes[i].amount;
|
||||||
tmp->totalmem = processes[i].totalmem;
|
tmp->totalmem = processes[i].totalmem;
|
||||||
tmp->name = strdup(processes[i].name);
|
tmp->name = strndup(processes[i].name, text_buffer_size);
|
||||||
tmp->rss = processes[i].rss;
|
tmp->rss = processes[i].rss;
|
||||||
tmp->vsize = processes[i].vsize;
|
tmp->vsize = processes[i].vsize;
|
||||||
|
|
||||||
@ -798,7 +798,7 @@ inline void proc_find_top(struct process **cpu, struct process **mem)
|
|||||||
tmp->pid = processes[i].pid;
|
tmp->pid = processes[i].pid;
|
||||||
tmp->amount = processes[i].amount;
|
tmp->amount = processes[i].amount;
|
||||||
tmp->totalmem = processes[i].totalmem;
|
tmp->totalmem = processes[i].totalmem;
|
||||||
tmp->name = strdup(processes[i].name);
|
tmp->name = strndup(processes[i].name, text_buffer_size);
|
||||||
tmp->rss = processes[i].rss;
|
tmp->rss = processes[i].rss;
|
||||||
tmp->vsize = processes[i].vsize;
|
tmp->vsize = processes[i].vsize;
|
||||||
|
|
||||||
|
@ -57,12 +57,12 @@ int scan_hddtemp(const char *arg, char **dev, char **addr, int *port)
|
|||||||
strncpy(buf1 + 5, buf1, 32 - 5);
|
strncpy(buf1 + 5, buf1, 32 - 5);
|
||||||
strncpy(buf1, "/dev/", 5);
|
strncpy(buf1, "/dev/", 5);
|
||||||
}
|
}
|
||||||
*dev = strdup(buf1);
|
*dev = strndup(buf1, text_buffer_size);
|
||||||
|
|
||||||
if (ret >= 2) {
|
if (ret >= 2) {
|
||||||
*addr = strdup(buf2);
|
*addr = strndup(buf2, text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
*addr = strdup("127.0.0.1");
|
*addr = strndup("127.0.0.1", text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ret == 3) {
|
if (ret == 3) {
|
||||||
|
@ -293,8 +293,8 @@ static mpd_ReturnElement *mpd_newReturnElement(const char *name,
|
|||||||
{
|
{
|
||||||
mpd_ReturnElement *ret = malloc(sizeof(mpd_ReturnElement));
|
mpd_ReturnElement *ret = malloc(sizeof(mpd_ReturnElement));
|
||||||
|
|
||||||
ret->name = strdup(name);
|
ret->name = strndup(name, text_buffer_size);
|
||||||
ret->value = strdup(value);
|
ret->value = strndup(value, text_buffer_size);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -415,7 +415,7 @@ mpd_Connection *mpd_newConnection(const char *host, int port, float timeout)
|
|||||||
}
|
}
|
||||||
|
|
||||||
*rt = '\0';
|
*rt = '\0';
|
||||||
output = strdup(connection->buffer);
|
output = strndup(connection->buffer, text_buffer_size);
|
||||||
strcpy(connection->buffer, rt + 1);
|
strcpy(connection->buffer, rt + 1);
|
||||||
connection->buflen = strlen(connection->buffer);
|
connection->buflen = strlen(connection->buffer);
|
||||||
|
|
||||||
@ -768,7 +768,7 @@ mpd_Status *mpd_getStatus(mpd_Connection *connection)
|
|||||||
status->totalTime = atoi(tok + 1);
|
status->totalTime = atoi(tok + 1);
|
||||||
}
|
}
|
||||||
} else if (strcmp(re->name, "error") == 0) {
|
} else if (strcmp(re->name, "error") == 0) {
|
||||||
status->error = strdup(re->value);
|
status->error = strndup(re->value, text_buffer_size);
|
||||||
} else if (strcmp(re->name, "xfade") == 0) {
|
} else if (strcmp(re->name, "xfade") == 0) {
|
||||||
status->crossfade = atoi(re->value);
|
status->crossfade = atoi(re->value);
|
||||||
} else if (strcmp(re->name, "updating_db") == 0) {
|
} else if (strcmp(re->name, "updating_db") == 0) {
|
||||||
@ -1018,37 +1018,37 @@ mpd_Song *mpd_songDup(mpd_Song *song)
|
|||||||
mpd_Song *ret = mpd_newSong();
|
mpd_Song *ret = mpd_newSong();
|
||||||
|
|
||||||
if (song->file) {
|
if (song->file) {
|
||||||
ret->file = strdup(song->file);
|
ret->file = strndup(song->file, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->artist) {
|
if (song->artist) {
|
||||||
ret->artist = strdup(song->artist);
|
ret->artist = strndup(song->artist, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->album) {
|
if (song->album) {
|
||||||
ret->album = strdup(song->album);
|
ret->album = strndup(song->album, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->title) {
|
if (song->title) {
|
||||||
ret->title = strdup(song->title);
|
ret->title = strndup(song->title, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->track) {
|
if (song->track) {
|
||||||
ret->track = strdup(song->track);
|
ret->track = strndup(song->track, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->name) {
|
if (song->name) {
|
||||||
ret->name = strdup(song->name);
|
ret->name = strndup(song->name, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->date) {
|
if (song->date) {
|
||||||
ret->date = strdup(song->date);
|
ret->date = strndup(song->date, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->genre) {
|
if (song->genre) {
|
||||||
ret->genre = strdup(song->genre);
|
ret->genre = strndup(song->genre, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->composer) {
|
if (song->composer) {
|
||||||
ret->composer = strdup(song->composer);
|
ret->composer = strndup(song->composer, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->disc) {
|
if (song->disc) {
|
||||||
ret->disc = strdup(song->disc);
|
ret->disc = strndup(song->disc, text_buffer_size);
|
||||||
}
|
}
|
||||||
if (song->comment) {
|
if (song->comment) {
|
||||||
ret->comment = strdup(song->comment);
|
ret->comment = strndup(song->comment, text_buffer_size);
|
||||||
}
|
}
|
||||||
ret->time = song->time;
|
ret->time = song->time;
|
||||||
ret->pos = song->pos;
|
ret->pos = song->pos;
|
||||||
@ -1090,7 +1090,7 @@ mpd_Directory *mpd_directoryDup(mpd_Directory *directory)
|
|||||||
mpd_Directory *ret = mpd_newDirectory();
|
mpd_Directory *ret = mpd_newDirectory();
|
||||||
|
|
||||||
if (directory->path) {
|
if (directory->path) {
|
||||||
ret->path = strdup(directory->path);
|
ret->path = strndup(directory->path, text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -1128,7 +1128,7 @@ mpd_PlaylistFile *mpd_playlistFileDup(mpd_PlaylistFile *playlist)
|
|||||||
mpd_PlaylistFile *ret = mpd_newPlaylistFile();
|
mpd_PlaylistFile *ret = mpd_newPlaylistFile();
|
||||||
|
|
||||||
if (playlist->path) {
|
if (playlist->path) {
|
||||||
ret->path = strdup(playlist->path);
|
ret->path = strndup(playlist->path, text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -1190,19 +1190,19 @@ mpd_InfoEntity *mpd_getNextInfoEntity(mpd_Connection *connection)
|
|||||||
entity = mpd_newInfoEntity();
|
entity = mpd_newInfoEntity();
|
||||||
entity->type = MPD_INFO_ENTITY_TYPE_SONG;
|
entity->type = MPD_INFO_ENTITY_TYPE_SONG;
|
||||||
entity->info.song = mpd_newSong();
|
entity->info.song = mpd_newSong();
|
||||||
entity->info.song->file = strdup(connection->returnElement->value);
|
entity->info.song->file = strndup(connection->returnElement->value, text_buffer_size);
|
||||||
} else if (strcmp(connection->returnElement->name, "directory") == 0) {
|
} else if (strcmp(connection->returnElement->name, "directory") == 0) {
|
||||||
entity = mpd_newInfoEntity();
|
entity = mpd_newInfoEntity();
|
||||||
entity->type = MPD_INFO_ENTITY_TYPE_DIRECTORY;
|
entity->type = MPD_INFO_ENTITY_TYPE_DIRECTORY;
|
||||||
entity->info.directory = mpd_newDirectory();
|
entity->info.directory = mpd_newDirectory();
|
||||||
entity->info.directory->path =
|
entity->info.directory->path =
|
||||||
strdup(connection->returnElement->value);
|
strndup(connection->returnElement->value, text_buffer_size);
|
||||||
} else if (strcmp(connection->returnElement->name, "playlist") == 0) {
|
} else if (strcmp(connection->returnElement->name, "playlist") == 0) {
|
||||||
entity = mpd_newInfoEntity();
|
entity = mpd_newInfoEntity();
|
||||||
entity->type = MPD_INFO_ENTITY_TYPE_PLAYLISTFILE;
|
entity->type = MPD_INFO_ENTITY_TYPE_PLAYLISTFILE;
|
||||||
entity->info.playlistFile = mpd_newPlaylistFile();
|
entity->info.playlistFile = mpd_newPlaylistFile();
|
||||||
entity->info.playlistFile->path =
|
entity->info.playlistFile->path =
|
||||||
strdup(connection->returnElement->value);
|
strndup(connection->returnElement->value, text_buffer_size);
|
||||||
} else if (strcmp(connection->returnElement->name, "cpos") == 0) {
|
} else if (strcmp(connection->returnElement->name, "cpos") == 0) {
|
||||||
entity = mpd_newInfoEntity();
|
entity = mpd_newInfoEntity();
|
||||||
entity->type = MPD_INFO_ENTITY_TYPE_SONG;
|
entity->type = MPD_INFO_ENTITY_TYPE_SONG;
|
||||||
@ -1234,19 +1234,19 @@ mpd_InfoEntity *mpd_getNextInfoEntity(mpd_Connection *connection)
|
|||||||
if (entity->type == MPD_INFO_ENTITY_TYPE_SONG && strlen(re->value)) {
|
if (entity->type == MPD_INFO_ENTITY_TYPE_SONG && strlen(re->value)) {
|
||||||
if (!entity->info.song->artist
|
if (!entity->info.song->artist
|
||||||
&& strcmp(re->name, "Artist") == 0) {
|
&& strcmp(re->name, "Artist") == 0) {
|
||||||
entity->info.song->artist = strdup(re->value);
|
entity->info.song->artist = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->album
|
} else if (!entity->info.song->album
|
||||||
&& strcmp(re->name, "Album") == 0) {
|
&& strcmp(re->name, "Album") == 0) {
|
||||||
entity->info.song->album = strdup(re->value);
|
entity->info.song->album = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->title
|
} else if (!entity->info.song->title
|
||||||
&& strcmp(re->name, "Title") == 0) {
|
&& strcmp(re->name, "Title") == 0) {
|
||||||
entity->info.song->title = strdup(re->value);
|
entity->info.song->title = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->track
|
} else if (!entity->info.song->track
|
||||||
&& strcmp(re->name, "Track") == 0) {
|
&& strcmp(re->name, "Track") == 0) {
|
||||||
entity->info.song->track = strdup(re->value);
|
entity->info.song->track = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->name
|
} else if (!entity->info.song->name
|
||||||
&& strcmp(re->name, "Name") == 0) {
|
&& strcmp(re->name, "Name") == 0) {
|
||||||
entity->info.song->name = strdup(re->value);
|
entity->info.song->name = strndup(re->value, text_buffer_size);
|
||||||
} else if (entity->info.song->time == MPD_SONG_NO_TIME
|
} else if (entity->info.song->time == MPD_SONG_NO_TIME
|
||||||
&& strcmp(re->name, "Time") == 0) {
|
&& strcmp(re->name, "Time") == 0) {
|
||||||
entity->info.song->time = atoi(re->value);
|
entity->info.song->time = atoi(re->value);
|
||||||
@ -1258,22 +1258,22 @@ mpd_InfoEntity *mpd_getNextInfoEntity(mpd_Connection *connection)
|
|||||||
entity->info.song->id = atoi(re->value);
|
entity->info.song->id = atoi(re->value);
|
||||||
} else if (!entity->info.song->date
|
} else if (!entity->info.song->date
|
||||||
&& strcmp(re->name, "Date") == 0) {
|
&& strcmp(re->name, "Date") == 0) {
|
||||||
entity->info.song->date = strdup(re->value);
|
entity->info.song->date = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->genre
|
} else if (!entity->info.song->genre
|
||||||
&& strcmp(re->name, "Genre") == 0) {
|
&& strcmp(re->name, "Genre") == 0) {
|
||||||
entity->info.song->genre = strdup(re->value);
|
entity->info.song->genre = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->composer
|
} else if (!entity->info.song->composer
|
||||||
&& strcmp(re->name, "Composer") == 0) {
|
&& strcmp(re->name, "Composer") == 0) {
|
||||||
entity->info.song->composer = strdup(re->value);
|
entity->info.song->composer = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->performer
|
} else if (!entity->info.song->performer
|
||||||
&& strcmp(re->name, "Performer") == 0) {
|
&& strcmp(re->name, "Performer") == 0) {
|
||||||
entity->info.song->performer = strdup(re->value);
|
entity->info.song->performer = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->disc
|
} else if (!entity->info.song->disc
|
||||||
&& strcmp(re->name, "Disc") == 0) {
|
&& strcmp(re->name, "Disc") == 0) {
|
||||||
entity->info.song->disc = strdup(re->value);
|
entity->info.song->disc = strndup(re->value, text_buffer_size);
|
||||||
} else if (!entity->info.song->comment
|
} else if (!entity->info.song->comment
|
||||||
&& strcmp(re->name, "Comment") == 0) {
|
&& strcmp(re->name, "Comment") == 0) {
|
||||||
entity->info.song->comment = strdup(re->value);
|
entity->info.song->comment = strndup(re->value, text_buffer_size);
|
||||||
}
|
}
|
||||||
} else if (entity->type == MPD_INFO_ENTITY_TYPE_DIRECTORY) {
|
} else if (entity->type == MPD_INFO_ENTITY_TYPE_DIRECTORY) {
|
||||||
} else if (entity->type == MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) {
|
} else if (entity->type == MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) {
|
||||||
@ -1298,7 +1298,7 @@ static char *mpd_getNextReturnElementNamed(mpd_Connection *connection,
|
|||||||
mpd_ReturnElement *re = connection->returnElement;
|
mpd_ReturnElement *re = connection->returnElement;
|
||||||
|
|
||||||
if (strcmp(re->name, name) == 0) {
|
if (strcmp(re->name, name) == 0) {
|
||||||
return strdup(re->value);
|
return strndup(re->value, text_buffer_size);
|
||||||
}
|
}
|
||||||
mpd_getNextReturnElement(connection);
|
mpd_getNextReturnElement(connection);
|
||||||
}
|
}
|
||||||
@ -1835,7 +1835,7 @@ mpd_OutputEntity *mpd_getNextOutput(mpd_Connection *connection)
|
|||||||
}
|
}
|
||||||
output->id = atoi(re->value);
|
output->id = atoi(re->value);
|
||||||
} else if (strcmp(re->name, "outputname") == 0) {
|
} else if (strcmp(re->name, "outputname") == 0) {
|
||||||
output->name = strdup(re->value);
|
output->name = strndup(re->value, text_buffer_size);
|
||||||
} else if (strcmp(re->name, "outputenabled") == 0) {
|
} else if (strcmp(re->name, "outputenabled") == 0) {
|
||||||
output->enabled = atoi(re->value);
|
output->enabled = atoi(re->value);
|
||||||
}
|
}
|
||||||
@ -1923,9 +1923,9 @@ void mpd_startSearch(mpd_Connection *connection, int exact)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (exact) {
|
if (exact) {
|
||||||
connection->request = strdup("find");
|
connection->request = strndup("find", text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
connection->request = strdup("search");
|
connection->request = strndup("search", text_buffer_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1937,7 +1937,7 @@ void mpd_startStatsSearch(mpd_Connection *connection)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
connection->request = strdup("count");
|
connection->request = strndup("count", text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mpd_startPlaylistSearch(mpd_Connection *connection, int exact)
|
void mpd_startPlaylistSearch(mpd_Connection *connection, int exact)
|
||||||
@ -1949,9 +1949,9 @@ void mpd_startPlaylistSearch(mpd_Connection *connection, int exact)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (exact) {
|
if (exact) {
|
||||||
connection->request = strdup("playlistfind");
|
connection->request = strndup("playlistfind", text_buffer_size);
|
||||||
} else {
|
} else {
|
||||||
connection->request = strdup("playlistsearch");
|
connection->request = strndup("playlistsearch", text_buffer_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2007,7 +2007,7 @@ void mpd_addConstraintSearch(mpd_Connection *connection, int type,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string = strdup(connection->request);
|
string = strndup(connection->request, text_buffer_size);
|
||||||
strtype = mpdTagItemKeys[type];
|
strtype = mpdTagItemKeys[type];
|
||||||
arg = mpd_sanitizeArg(name);
|
arg = mpd_sanitizeArg(name);
|
||||||
|
|
||||||
|
14
src/linux.c
14
src/linux.c
@ -192,22 +192,22 @@ char *get_ioscheduler(char *disk)
|
|||||||
char buf[128];
|
char buf[128];
|
||||||
|
|
||||||
if (!disk)
|
if (!disk)
|
||||||
return strdup("n/a");
|
return strndup("n/a", text_buffer_size);
|
||||||
|
|
||||||
snprintf(buf, 127, "/sys/block/%s/queue/scheduler", disk);
|
snprintf(buf, 127, "/sys/block/%s/queue/scheduler", disk);
|
||||||
if ((fp = fopen(buf, "r")) == NULL) {
|
if ((fp = fopen(buf, "r")) == NULL) {
|
||||||
return strdup("n/a");
|
return strndup("n/a", text_buffer_size);
|
||||||
}
|
}
|
||||||
while (!feof(fp)) {
|
while (!feof(fp)) {
|
||||||
fscanf(fp, "%127s", buf);
|
fscanf(fp, "%127s", buf);
|
||||||
if (buf[0] == '[') {
|
if (buf[0] == '[') {
|
||||||
buf[strlen(buf) - 1] = '\0';
|
buf[strlen(buf) - 1] = '\0';
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return strdup(buf + 1);
|
return strndup(buf + 1, text_buffer_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
return strdup("n/a");
|
return strndup("n/a", text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
int interface_up(const char *dev)
|
int interface_up(const char *dev)
|
||||||
@ -236,9 +236,9 @@ int interface_up(const char *dev)
|
|||||||
#define SAVE_SET_STRING(x, y) \
|
#define SAVE_SET_STRING(x, y) \
|
||||||
if (x && strcmp((char *)x, (char *)y)) { \
|
if (x && strcmp((char *)x, (char *)y)) { \
|
||||||
free(x); \
|
free(x); \
|
||||||
x = strdup("multiple"); \
|
x = strndup("multiple", text_buffer_size); \
|
||||||
} else if (!x) { \
|
} else if (!x) { \
|
||||||
x = strdup(y); \
|
x = strndup(y, text_buffer_size); \
|
||||||
}
|
}
|
||||||
|
|
||||||
void update_gateway_info(void)
|
void update_gateway_info(void)
|
||||||
@ -284,7 +284,7 @@ void update_gateway_info(void)
|
|||||||
CLOSE_FAIL:
|
CLOSE_FAIL:
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
FAIL:
|
FAIL:
|
||||||
info.gw_info.iface = info.gw_info.ip = strdup("failed");
|
info.gw_info.iface = info.gw_info.ip = strndup("failed", text_buffer_size);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ void mbox_scan(char *args, char *output, size_t max_len)
|
|||||||
start[(long) (strrchr(mbox_mail_spool, '"') - start)] = '\0';
|
start[(long) (strrchr(mbox_mail_spool, '"') - start)] = '\0';
|
||||||
strncpy(mbox_mail_spool, start, DEFAULT_TEXT_BUFFER_SIZE);
|
strncpy(mbox_mail_spool, start, DEFAULT_TEXT_BUFFER_SIZE);
|
||||||
} else {
|
} else {
|
||||||
char *copy_args = strdup(args);
|
char *copy_args = strndup(args, text_buffer_size);
|
||||||
char *tmp = strtok(copy_args, " ");
|
char *tmp = strtok(copy_args, " ");
|
||||||
char *start = tmp;
|
char *start = tmp;
|
||||||
|
|
||||||
|
@ -716,7 +716,7 @@ inline void proc_find_top(struct process **cpu, struct process **mem)
|
|||||||
for (i = 0; i < n_processes; i++) {
|
for (i = 0; i < n_processes; i++) {
|
||||||
if (!((p[i].p_flag & P_SYSTEM)) && p[i].p_comm != NULL) {
|
if (!((p[i].p_flag & P_SYSTEM)) && p[i].p_comm != NULL) {
|
||||||
processes[j].pid = p[i].p_pid;
|
processes[j].pid = p[i].p_pid;
|
||||||
processes[j].name = strdup(p[i].p_comm);
|
processes[j].name = strndup(p[i].p_comm, text_buffer_size);
|
||||||
processes[j].amount = 100.0 * p[i].p_pctcpu / FSCALE;
|
processes[j].amount = 100.0 * p[i].p_pctcpu / FSCALE;
|
||||||
processes[j].totalmem = (float) (p[i].p_vm_rssize * pagesize /
|
processes[j].totalmem = (float) (p[i].p_vm_rssize * pagesize /
|
||||||
(float) total_pages) * 100.0;
|
(float) total_pages) * 100.0;
|
||||||
@ -732,7 +732,7 @@ inline void proc_find_top(struct process **cpu, struct process **mem)
|
|||||||
tmp->pid = processes[i].pid;
|
tmp->pid = processes[i].pid;
|
||||||
tmp->amount = processes[i].amount;
|
tmp->amount = processes[i].amount;
|
||||||
tmp->totalmem = processes[i].totalmem;
|
tmp->totalmem = processes[i].totalmem;
|
||||||
tmp->name = strdup(processes[i].name);
|
tmp->name = strndup(processes[i].name, text_buffer_size);
|
||||||
|
|
||||||
ttmp = mem[i];
|
ttmp = mem[i];
|
||||||
mem[i] = tmp;
|
mem[i] = tmp;
|
||||||
@ -750,7 +750,7 @@ inline void proc_find_top(struct process **cpu, struct process **mem)
|
|||||||
tmp->pid = processes[i].pid;
|
tmp->pid = processes[i].pid;
|
||||||
tmp->amount = processes[i].amount;
|
tmp->amount = processes[i].amount;
|
||||||
tmp->totalmem = processes[i].totalmem;
|
tmp->totalmem = processes[i].totalmem;
|
||||||
tmp->name = strdup(processes[i].name);
|
tmp->name = strndup(processes[i].name, text_buffer_size);
|
||||||
|
|
||||||
ttmp = cpu[i];
|
ttmp = cpu[i];
|
||||||
cpu[i] = tmp;
|
cpu[i] = tmp;
|
||||||
|
@ -171,7 +171,7 @@ static inline int parse_rss_2_0(PRSS *res, xmlNodePtr root)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
res->version = strdup("2.0");
|
res->version = strndup("2.0", text_buffer_size);
|
||||||
res->items = malloc(items * sizeof(PRSS_Item));
|
res->items = malloc(items * sizeof(PRSS_Item));
|
||||||
res->item_count = 0;
|
res->item_count = 0;
|
||||||
|
|
||||||
@ -200,7 +200,7 @@ static inline int parse_rss_1_0(PRSS *res, xmlNodePtr root)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
res->version = strdup("1.0");
|
res->version = strndup("1.0", text_buffer_size);
|
||||||
res->items = malloc(items * sizeof(PRSS_Item));
|
res->items = malloc(items * sizeof(PRSS_Item));
|
||||||
res->item_count = 0;
|
res->item_count = 0;
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ PRSS *get_rss_info(char *uri, int delay)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
curfeed = &feeds[num_feeds];
|
curfeed = &feeds[num_feeds];
|
||||||
curfeed->uri = strdup(uri);
|
curfeed->uri = strndup(uri, text_buffer_size);
|
||||||
num_feeds++;
|
num_feeds++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ char *smapi_read_str(const char *path)
|
|||||||
fscanf(fp, "%255s\n", str);
|
fscanf(fp, "%255s\n", str);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
return strdup(str);
|
return strndup(str, text_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
int smapi_read_int(const char *path)
|
int smapi_read_int(const char *path)
|
||||||
|
@ -183,7 +183,7 @@ static int process_parse_stat(struct process *process)
|
|||||||
if (process->name) {
|
if (process->name) {
|
||||||
free(process->name);
|
free(process->name);
|
||||||
}
|
}
|
||||||
process->name = strdup(deparenthesised_name);
|
process->name = strndup(deparenthesised_name, text_buffer_size);
|
||||||
process->rss *= getpagesize();
|
process->rss *= getpagesize();
|
||||||
|
|
||||||
if (!cur->memmax) {
|
if (!cur->memmax) {
|
||||||
|
Loading…
Reference in New Issue
Block a user