notify.c: fix several buffer overflows
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
parent
8abb1a93ad
commit
65c2b6d9b8
31
src/notify.c
31
src/notify.c
@ -130,9 +130,12 @@ void notify_init_vars(void)
|
|||||||
pthread_mutex_init(&nbar.mutex, NULL);
|
pthread_mutex_init(&nbar.mutex, NULL);
|
||||||
nbar.show = 1;
|
nbar.show = 1;
|
||||||
nbar.cntdwn = 300;
|
nbar.cntdwn = 300;
|
||||||
strncpy(nbar.datefmt, date_format, strlen(date_format) + 1);
|
strncpy(nbar.datefmt, date_format, BUFSIZ);
|
||||||
strncpy(nbar.timefmt, time_format, strlen(time_format) + 1);
|
nbar.datefmt[BUFSIZ - 1] = '\0';
|
||||||
strncpy(nbar.cmd, cmd, strlen(cmd) + 1);
|
strncpy(nbar.timefmt, time_format, BUFSIZ);
|
||||||
|
nbar.timefmt[BUFSIZ - 1] = '\0';
|
||||||
|
strncpy(nbar.cmd, cmd, BUFSIZ);
|
||||||
|
nbar.cmd[BUFSIZ - 1] = '\0';
|
||||||
|
|
||||||
if ((nbar.shell = getenv("SHELL")) == NULL)
|
if ((nbar.shell = getenv("SHELL")) == NULL)
|
||||||
nbar.shell = "/bin/sh";
|
nbar.shell = "/bin/sh";
|
||||||
@ -707,26 +710,26 @@ static void config_option_edit(int i)
|
|||||||
case 1:
|
case 1:
|
||||||
status_mesg(date_str, "");
|
status_mesg(date_str, "");
|
||||||
pthread_mutex_lock(&nbar.mutex);
|
pthread_mutex_lock(&nbar.mutex);
|
||||||
strncpy(buf, nbar.datefmt,
|
strncpy(buf, nbar.datefmt, BUFSIZ);
|
||||||
strlen(nbar.datefmt) + 1);
|
buf[BUFSIZ - 1] = '\0';
|
||||||
pthread_mutex_unlock(&nbar.mutex);
|
pthread_mutex_unlock(&nbar.mutex);
|
||||||
if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
|
if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
|
||||||
pthread_mutex_lock(&nbar.mutex);
|
pthread_mutex_lock(&nbar.mutex);
|
||||||
strncpy(nbar.datefmt, buf,
|
strncpy(nbar.datefmt, buf, BUFSIZ);
|
||||||
strlen(buf) + 1);
|
nbar.datefmt[BUFSIZ - 1] = '\0';
|
||||||
pthread_mutex_unlock(&nbar.mutex);
|
pthread_mutex_unlock(&nbar.mutex);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
status_mesg(time_str, "");
|
status_mesg(time_str, "");
|
||||||
pthread_mutex_lock(&nbar.mutex);
|
pthread_mutex_lock(&nbar.mutex);
|
||||||
strncpy(buf, nbar.timefmt,
|
strncpy(buf, nbar.timefmt, BUFSIZ);
|
||||||
strlen(nbar.timefmt) + 1);
|
buf[BUFSIZ - 1] = '\0';
|
||||||
pthread_mutex_unlock(&nbar.mutex);
|
pthread_mutex_unlock(&nbar.mutex);
|
||||||
if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
|
if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
|
||||||
pthread_mutex_lock(&nbar.mutex);
|
pthread_mutex_lock(&nbar.mutex);
|
||||||
strncpy(nbar.timefmt, buf,
|
strncpy(nbar.timefmt, buf, BUFSIZ);
|
||||||
strlen(buf) + 1);
|
nbar.timefmt[BUFSIZ - 1] = '\0';
|
||||||
pthread_mutex_unlock(&nbar.mutex);
|
pthread_mutex_unlock(&nbar.mutex);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -746,11 +749,13 @@ static void config_option_edit(int i)
|
|||||||
case 4:
|
case 4:
|
||||||
status_mesg(cmd_str, "");
|
status_mesg(cmd_str, "");
|
||||||
pthread_mutex_lock(&nbar.mutex);
|
pthread_mutex_lock(&nbar.mutex);
|
||||||
strncpy(buf, nbar.cmd, strlen(nbar.cmd) + 1);
|
strncpy(buf, nbar.cmd, BUFSIZ);
|
||||||
|
buf[BUFSIZ - 1] = '\0';
|
||||||
pthread_mutex_unlock(&nbar.mutex);
|
pthread_mutex_unlock(&nbar.mutex);
|
||||||
if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
|
if (updatestring(win[STA].p, &buf, 0, 1) == 0) {
|
||||||
pthread_mutex_lock(&nbar.mutex);
|
pthread_mutex_lock(&nbar.mutex);
|
||||||
strncpy(nbar.cmd, buf, strlen(buf) + 1);
|
strncpy(nbar.cmd, buf, BUFSIZ);
|
||||||
|
nbar.cmd[BUFSIZ - 1] = '\0';
|
||||||
pthread_mutex_unlock(&nbar.mutex);
|
pthread_mutex_unlock(&nbar.mutex);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user