summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/Modules/curses.c40
2 files changed, 25 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 7e77e3231..20c7714d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2008-09-04 Clint Adams <clint@zsh.org>
+ * 25611, 25613: Src/Modules/curses.c: protect against two possible
+ NULL dereferences.
+
* 25612: Src/Zle/compmatch.c: remove dead code.
* 25610: Src/hist.c: remove dead code.
diff --git a/Src/Modules/curses.c b/Src/Modules/curses.c
index df8a9cdc6..fe03cd268 100644
--- a/Src/Modules/curses.c
+++ b/Src/Modules/curses.c
@@ -874,16 +874,17 @@ zccmd_attr(const char *nam, char **args)
if ((zca = zcurses_attrget(w->win, ptr)) == NULL) {
zwarnnam(nam, "attribute `%s' not known", ptr);
ret = 1;
- }
- switch(onoff) {
- case ZCURSES_ATTRON:
- if (wattron(w->win, zca->number) == ERR)
- ret = 1;
- break;
- case ZCURSES_ATTROFF:
- if (wattroff(w->win, zca->number) == ERR)
- ret = 1;
- break;
+ } else {
+ switch(onoff) {
+ case ZCURSES_ATTRON:
+ if (wattron(w->win, zca->number) == ERR)
+ ret = 1;
+ break;
+ case ZCURSES_ATTROFF:
+ if (wattroff(w->win, zca->number) == ERR)
+ ret = 1;
+ break;
+ }
}
}
}
@@ -948,14 +949,17 @@ zccmd_bg(const char *nam, char **args)
if ((zca = zcurses_attrget(w->win, ptr)) == NULL) {
zwarnnam(nam, "attribute `%s' not known", ptr);
ret = 1;
- }
- switch(onoff) {
- case ZCURSES_ATTRON:
- ch |= zca->number;
- break;
- case ZCURSES_ATTROFF:
- ch &= ~zca->number;
- break;
+ } else {
+ switch(onoff) {
+ case ZCURSES_ATTRON:
+ if (wattron(w->win, zca->number) == ERR)
+ ret = 1;
+ break;
+ case ZCURSES_ATTROFF:
+ if (wattroff(w->win, zca->number) == ERR)
+ ret = 1;
+ break;
+ }
}
}
}