Changeset a31a662


Ignore:
Timestamp:
01/13/14 12:07:30 (19 months ago)
Author:
Kris Moore <kris@…>
Branches:
master, enter/10, releng/10.0, releng/10.0.1, releng/10.0.2, releng/10.0.3, releng/10.1, releng/10.1.1, releng/10.1.2
Children:
d4d1ba9b
Parents:
58ffcd7
Message:

Fix a bug setting argv[0+X] on the child PBI in the container

Fixes an issue with wine starting its 'wineloader' application

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src-sh/pbi-manager/pbime/pbime.c

    r544e6570 ra31a662  
    8686        char pipetemplate[] = "/tmp/.pbi-callback-XXXXXXXXXXXXXXXX"; 
    8787        char *pipedir; 
     88        char *newargv[1024]; 
    8889        char fifoin[MAXPATHLEN];  
     90        char newlibdir[MAXPATHLEN]; 
    8991        int argoffset; 
    9092 
     
    163165                } 
    164166 
     167                // Setup the newargv with right stack 
     168                for ( int i = argoffset; i<argc; i++) 
     169                { 
     170                        newargv[i-argoffset] = argv[i]; 
     171                        if ( i > 1020 ) { 
     172                                err(1, "Too many args..."); 
     173                        } 
     174                } 
     175                newargv[0] = argv[3]; 
     176 
     177                // Make sure 32bit compat is enabled 
     178                strncat(newlibdir, "/usr/local", (strlen("/usr/local") )); 
     179                strcat(newlibdir, "/lib"); 
     180                setenv("LD_32_LIBRARY_PATH", newlibdir, 1); 
    165181 
    166182                // Fork off the PBI process, and have the parent wait for it to finish 
     
    168184                if(app_pid == 0) { 
    169185                        // Execute the PBI now 
    170                         if (execvp(argv[3], argv + argoffset) == -1) 
     186                        printf( "newargv[0]: %s \n", newargv[0]); 
     187                        printf( "newargv[1]: %s \n", newargv[1]); 
     188                        if (execvp(argv[3], newargv) == -1) 
    171189                                err(1, "execvp(): %s", argv[3]); 
    172190                        exit(0); 
Note: See TracChangeset for help on using the changeset viewer.