50 lines
1.5 KiB
Diff
50 lines
1.5 KiB
Diff
|
diff -urNp mawk-1.3.4.orig/files.c mawk-1.3.4/files.c
|
||
|
--- mawk-1.3.4.orig/files.c 2009-12-17 01:06:51.000000000 +0100
|
||
|
+++ mawk-1.3.4/files.c 2012-01-09 22:07:45.667127645 +0100
|
||
|
@@ -506,7 +506,7 @@ remove_from_child_list(int pid)
|
||
|
int
|
||
|
wait_for(int pid)
|
||
|
{
|
||
|
- int exit_status;
|
||
|
+ int exit_status = 0;
|
||
|
struct child *p;
|
||
|
int id;
|
||
|
|
||
|
diff -urNp mawk-1.3.4.orig/fin.c mawk-1.3.4/fin.c
|
||
|
--- mawk-1.3.4.orig/fin.c 2009-12-17 01:06:57.000000000 +0100
|
||
|
+++ mawk-1.3.4/fin.c 2012-01-09 22:07:45.667127645 +0100
|
||
|
@@ -317,7 +317,7 @@ FINgets(FIN * fin, unsigned *len_p)
|
||
|
unsigned rr;
|
||
|
unsigned amount = (unsigned) (fin->limit - p);
|
||
|
|
||
|
- p = (char *) memcpy(fin->buff, p, r = (unsigned) (fin->limit - p));
|
||
|
+ p = (char *) memmove(fin->buff, p, r = (unsigned) (fin->limit - p));
|
||
|
q = p + r;
|
||
|
rr = fin->nbuffs * BUFFSZ - r;
|
||
|
|
||
|
diff -urNp mawk-1.3.4.orig/rexp3.c mawk-1.3.4/rexp3.c
|
||
|
--- mawk-1.3.4.orig/rexp3.c 2009-12-15 02:50:07.000000000 +0100
|
||
|
+++ mawk-1.3.4/rexp3.c 2012-01-09 22:07:45.668127668 +0100
|
||
|
@@ -149,7 +149,10 @@ REmatch(char *str, /* string to test */
|
||
|
goto reswitch;
|
||
|
|
||
|
case M_STR + U_ON + END_OFF:
|
||
|
- if (!(s = str_str(s, str_len, m->s_data.str, m->s_len))) {
|
||
|
+ if (s >= str_end) {
|
||
|
+ goto refill;
|
||
|
+ }
|
||
|
+ if (!(s = str_str(s, (unsigned) (str_end - s), m->s_data.str, m->s_len))) {
|
||
|
goto refill;
|
||
|
}
|
||
|
if (s >= str + strlen(str)) {
|
||
|
@@ -229,6 +232,9 @@ REmatch(char *str, /* string to test */
|
||
|
s++;
|
||
|
}
|
||
|
}
|
||
|
+ if (s >= str_end) {
|
||
|
+ goto refill;
|
||
|
+ }
|
||
|
s++;
|
||
|
push(m, s, ss, U_ON);
|
||
|
if (!ss) {
|