1 diff -rupN INIT.2011-02-08.clean/src/cmd/ksh93/sh/init.c INIT.2011-02-08/src/cmd/ksh93/sh/init.c |
|
2 --- INIT.2011-02-08.clean/src/cmd/ksh93/sh/init.c 2012-05-07 14:21:24.948093271 +0100 |
|
3 +++ INIT.2011-02-08/src/cmd/ksh93/sh/init.c 2012-05-07 14:30:52.907885321 +0100 |
|
4 @@ -1352,6 +1352,7 @@ Shell_t *sh_init(register int argc,regis |
|
5 job_clear(); |
|
6 if(argc>0) |
|
7 { |
|
8 + int dolv_index = -1; |
|
9 /* check for restricted shell */ |
|
10 if(type&SH_TYPE_RESTRICTED) |
|
11 sh_onoption(SH_RESTRICTED); |
|
12 @@ -1379,7 +1380,10 @@ Shell_t *sh_init(register int argc,regis |
|
13 sh_done(shp,0); |
|
14 } |
|
15 opt_info.disc = 0; |
|
16 - shp->st.dolv=argv+(argc-1)-shp->st.dolc; |
|
17 + dolv_index = (argc-1)-shp->st.dolc; |
|
18 + shp->st.dolv=argv+dolv_index; |
|
19 + shp->st.repl_index = dolv_index; |
|
20 + shp->st.repl_arg = argv[dolv_index]; |
|
21 shp->st.dolv[0] = argv[0]; |
|
22 if(shp->st.dolc < 1) |
|
23 sh_onoption(SH_SFLAG); |
|
24 diff -rupN INIT.2011-02-08.clean/src/cmd/ksh93/sh/main.c INIT.2011-02-08/src/cmd/ksh93/sh/main.c |
|
25 --- INIT.2011-02-08.clean/src/cmd/ksh93/sh/main.c 2012-05-07 14:43:03.840822719 +0100 |
|
26 +++ INIT.2011-02-08/src/cmd/ksh93/sh/main.c 2012-05-07 14:59:12.341447529 +0100 |
|
27 @@ -296,6 +296,8 @@ int sh_main(int ac, char *av[], Shinit_f |
|
28 * try to undo effect of solaris 2.5+ |
|
29 * change for argv for setuid scripts |
|
30 */ |
|
31 + if (shp->st.repl_index > 0) |
|
32 + av[shp->st.repl_index] = shp->st.repl_arg; |
|
33 if(((type = sh_type(cp = av[0])) & SH_TYPE_SH) && (!(name = nv_getval(L_ARGNOD)) || !((type = sh_type(cp = name)) & SH_TYPE_SH))) |
|
34 { |
|
35 av[0] = (type & SH_TYPE_LOGIN) ? cp : path_basename(cp); |
|
36 diff -rupN INIT.2011-02-08.clean/src/cmd/ksh93/include/defs.h INIT.2011-02-08/src/cmd/ksh93/include/defs.h |
|
37 --- INIT.2011-02-08.clean/src/cmd/ksh93/include/defs.h 2012-05-08 12:33:38.805834763 +0100 |
|
38 +++ INIT.2011-02-08/src/cmd/ksh93/include/defs.h 2012-05-08 12:36:40.987228722 +0100 |
|
39 @@ -97,6 +97,8 @@ struct sh_scoped |
|
40 char **otrapcom; |
|
41 void *timetrap; |
|
42 struct Ufunction *real_fun; /* current 'function name' function */ |
|
43 + int repl_index; |
|
44 + char *repl_arg; |
|
45 }; |
|
46 |
|
47 struct limits |
|