fix a null pointer deref in vi's search

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13073 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Mike Baker 2008-10-29 13:46:28 +00:00
parent e8fe824c61
commit f9ce7a4e7c
1 changed files with 35 additions and 0 deletions

View File

@ -0,0 +1,35 @@
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -3313,7 +3313,7 @@
buf[1] = '\0';
q = get_input_line(buf); // get input line- use "status line"
if (q[0] && !q[1]) {
- if (last_search_pattern[0])
+ if (last_search_pattern)
last_search_pattern[0] = c;
goto dc3; // if no pat re-use old pat
}
@@ -3329,6 +3329,10 @@
if (cmdcnt-- > 1) {
do_cmd(c);
} // repeat cnt
+ if (last_search_pattern == 0) {
+ msg = "No previous regular expression";
+ goto dc2;
+ }
dir = BACK; // assume BACKWARD search
p = dot - 1;
if (last_search_pattern[0] == '?') {
@@ -3348,10 +3352,8 @@
msg = "No previous regular expression";
goto dc2;
}
- if (last_search_pattern[0] == '/') {
- dir = FORWARD; // assume FORWARD search
- p = dot + 1;
- }
+ dir = FORWARD; // assume FORWARD search
+ p = dot + 1;
if (last_search_pattern[0] == '?') {
dir = BACK;
p = dot - 1;