execve exit status on MIPS

From: Halesh S
Date: Thu Sep 18 2008 - 00:34:19 EST



Hi all,

Please find the below testcase..

#include <stdio.h>
#include <limits.h>
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>

#define EXE_NAME "./exe"

char e2BIG[ARG_MAX+1][10];
char *envList[]={NULL};

int main(void)
{
int ret,ind;

for(ind = 0; ind < ARG_MAX+1; ind++)
strcpy(e2BIG[ind], "helloworld");

if ((ret = chmod(EXE_NAME,0744)) != 0){
printf("chmod failed\n");
exit(1);
}

/* whne arg list is too long */
if ((ret = execve(EXE_NAME,e2BIG,envList)) == -1) {
if ( errno == E2BIG)
printf("Test Pass\n");
else
printf("Test Fail : Got Errno %d\n", errno);
exit(0);
}
else
printf("execve worked out of limit\n");
exit(1);
}


On MIPS E2BIG is not getting set as errno instead EFAULT is set, while on
other archs like ARM, PowerPC and i686 I am able to get E2BIG.

Please let me know about the issue...

Let EXE_NAME be any executable....

Thanks,
Halesh

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/