summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-arch/star/files/star-1.5.1-changewarnSegv.patch')
-rw-r--r--app-arch/star/files/star-1.5.1-changewarnSegv.patch80
1 files changed, 80 insertions, 0 deletions
diff --git a/app-arch/star/files/star-1.5.1-changewarnSegv.patch b/app-arch/star/files/star-1.5.1-changewarnSegv.patch
new file mode 100644
index 000000000000..74d4870d5555
--- /dev/null
+++ b/app-arch/star/files/star-1.5.1-changewarnSegv.patch
@@ -0,0 +1,80 @@
+--- star-1.5/star/checkerr.c.orig-segv 2006-10-31 18:06:25.000000000 +0100
++++ star-1.5/star/checkerr.c 2007-08-27 11:42:39.000000000 +0200
+@@ -183,39 +183,45 @@ LOCAL struct eflags {
+ */
+ LOCAL UInt32_t
+ errflags(eflag, doexit)
+- char *eflag;
+- BOOL doexit;
++ char *eflag;
++ BOOL doexit;
+ {
+- register char *p = eflag;
+- char *ef = _endword(eflag);
+- register struct eflags *ep;
+- register int slen;
+- register UInt32_t nflags = 0;
+-
+- do {
+- for (ep = eflags; ep->fname; ep++) {
+- slen = strlen(ep->fname);
+- if ((strncmp(ep->fname, p, slen) == 0) &&
+- (p[slen] == '|' || p[slen] == ' ' ||
+- p[slen] == '\0')) {
+- nflags |= ep->fval;
+- break;
+- }
+- }
+- if (ep->fname == NULL) {
+- if (doexit)
+- comerrno(EX_BAD, "Bad flag '%s'\n", p);
+- return (0);
+- }
+- p = strchr(p, '|');
+- } while (p < ef && p && *p++ == '|');
+-
+- if ((nflags & ~(UInt32_t)(E_ABORT|E_WARN)) == 0) {
+- if (doexit)
+- comerrno(EX_BAD, "Bad error condition '%s'.\n", eflag);
+- return (0);
+- }
+- return (nflags);
++ register struct eflags *ep;
++ register int slen;
++ register UInt32_t nflags = 0;
++ char *curflags;
++ char *curflag;
++
++ curflags = strdup (eflag);
++ *_endword(curflags) = '\0';
++ curflag = strtok (curflags, "|");
++
++ while (curflag != NULL) {
++ for (ep = eflags; ep->fname; ep++) {
++ slen = strlen (ep->fname);
++ if ((strncmp (ep->fname, curflag, slen)) == 0) {
++ nflags |= ep->fval;
++ goto next;
++ }
++ }
++
++ if (doexit)
++ comerrno (EX_BAD, "Bad flag '%s' \n", curflag);
++
++ free (curflags);
++ return (0);
++ next:
++ curflag = strtok (NULL, "|");
++ }
++
++ free (curflags);
++
++ if ((nflags & ~(UInt32_t)(E_ABORT|E_WARN)) == 0) {
++ if (doexit)
++ comerrno(EX_BAD, "Bad error condition '%s'.\n", eflag);
++ return (0);
++ }
++ return (nflags);
+ }
+
+ LOCAL ec_t *