components/ksh93/patches/CR6934836.patch
changeset 805 23c55a2f8a8e
equal deleted inserted replaced
804:6652c7c4eb82 805:23c55a2f8a8e
       
     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