SHA256
1
0
forked from pool/mawk
mawk/mawk-1.3.4-fix-regex-matching.patch
Stephan Kulow 15e6e8572f Accepting request 99588 from Base:System
- added mawk-1.3.4-fix-regex-matching.patch which adds limit-check
  after processing match(test, "[^0-9A-Za-z]") to ensure the
  internal trailing null of the test-string is not mistaken for
  part of the string (backported from development snapshot,
  bnc#740484)
- specfile cleanup

OBS-URL: https://build.opensuse.org/request/show/99588
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/mawk?expand=0&rev=8
2012-01-10 13:51:07 +00:00

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) {