author | Norm Jacobs <Norm.Jacobs@Oracle.COM> |
Tue, 05 May 2015 06:49:34 -0500 | |
changeset 4253 | d6f30e77062b |
parent 4196 | d697072a92f5 |
permissions | -rw-r--r-- |
1549
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
1 |
--- a/src/cmd/ksh93/sh/init.c |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
2 |
+++ b/src/cmd/ksh93/sh/init.c |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
3 |
@@ -720,7 +720,7 @@ static char* get_lastarg(Namval_t* np, Namfun_t *fp) |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
4 |
char *cp; |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
5 |
int pid; |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
6 |
if(sh_isstate(SH_INIT) && (cp=shp->lastarg) && *cp=='*' && (pid=strtol(cp+1,&cp,10)) && *cp=='*') |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
7 |
- nv_putval(np,(pid==shp->gd->ppid?cp+1:0),0); |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
8 |
+ nv_putval(np,cp+1,0); |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
9 |
return(shp->lastarg); |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
10 |
} |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
11 |
|
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
12 |
--- a/src/cmd/ksh93/sh/main.c |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
13 |
+++ b/src/cmd/ksh93/sh/main.c |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
14 |
@@ -298,7 +298,7 @@ int sh_main(int ac, char *av[], Shinit_f userinit) |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
15 |
*/ |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
16 |
if (shp->st.repl_index > 0) |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
17 |
av[shp->st.repl_index] = shp->st.repl_arg; |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
18 |
- if(((type = sh_type(cp = av[0])) & SH_TYPE_SH) && (!(name = nv_getval(L_ARGNOD)) || !((type = sh_type(cp = name)) & SH_TYPE_SH))) |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
19 |
+ if(((type = sh_type(cp = av[0])) & SH_TYPE_SH) && (name = nv_getval(L_ARGNOD)) && (!((type = sh_type(cp = name)) & SH_TYPE_SH))) |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
20 |
{ |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
21 |
av[0] = (type & SH_TYPE_LOGIN) ? cp : path_basename(cp); |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
22 |
/* exec to change $0 for ps */ |
f683981a3096
17432413 Infinite /bin/sh exec loop in ksh93
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
23 |