execve exit status on MIPS

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Halesh S
Date: Wednesday, September 17, 2008 - 9:33 pm

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

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
execve exit status on MIPS, Halesh S, (Wed Sep 17, 9:33 pm)
Re: execve exit status on MIPS, David Newall, (Wed Sep 17, 9:55 pm)