Author: jilles
Date: Fri Oct 29 21:20:56 2010
New Revision: 214534
URL: http://svn.freebsd.org/changeset/base/214534

Log:
  sh: Reject function names ending in one of !%*+...@}~
  
  These do something else in ksh: name=(...) is an array or compound variable
  assignment and the others are extended patterns.
  
  This is the last patch of the ones tested in the exp run.
  
  Exp-run done by:      pav (with some other sh(1) changes)

Modified:
  head/bin/sh/parser.c

Modified: head/bin/sh/parser.c
==============================================================================
--- head/bin/sh/parser.c        Fri Oct 29 21:20:14 2010        (r214533)
+++ head/bin/sh/parser.c        Fri Oct 29 21:20:56 2010        (r214534)
@@ -644,9 +644,13 @@ simplecmd(union node **rpp, union node *
                        /*
                         * - Require plain text.
                         * - Functions with '/' cannot be called.
+                        * - Reject name=().
+                        * - Reject ksh extended glob patterns.
                         */
                        if (!noexpand(n->narg.text) || quoteflag ||
-                           strchr(n->narg.text, '/'))
+                           strchr(n->narg.text, '/') ||
+                           strchr("!%*+...@}~",
+                               n->narg.text[strlen(n->narg.text) - 1]))
                                synerror("Bad function name");
                        rmescapes(n->narg.text);
                        if (find_builtin(n->narg.text, &special) >= 0 &&
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to