*BSD News Article 49602


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!newsroom.utas.edu.au!munnari.oz.au!ihnp4.ucsd.edu!agate!nickkral
From: nickkral@parker.EECS.Berkeley.EDU (Nick Kralevich)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: porting Linux apps to BSD !
Date: 23 Aug 1995 08:37:33 GMT
Organization: Electrical Engineering Computer Science Department, University of California at Berkeley
Lines: 55
Message-ID: <41epcd$bn4@agate.berkeley.edu>
References: <aak2.808728796@Ra.MsState.Edu> <41dkk4$fbn@news.rwth-aachen.de>
NNTP-Posting-Host: parker.eecs.berkeley.edu

In article <41dkk4$fbn@news.rwth-aachen.de>,
Guido Muesch <odiug@gom.informatik.rwth-aachen.de> wrote:
>Under Linux this works, because they remapped the zero
>page, so they have a 0 at position 0.  

Ummm, no.

I've tested all of the following programs on a Linux 1.2.13 a.out 
system, and they all generate seg faults. (for the sake of space, all of
these code fragments should be preceded by "#include <stdio.h>" and
"#include <string.h>"). 

----- Begin -----
main() {
        char * foo = NULL;
        char * bar = NULL;
        printf("%c\n", foo[0]);
}
----- End -----

----- Begin -----
main() {
        char * foo = NULL;
        char * bar = NULL;
        strcpy(foo, bar);
}
----- End -----

----- Begin -----
main() {
        char * foo = NULL;
        char * bar = (char *) malloc(100 * sizeof(char));
        if (bar == NULL) exit(1);
        strcpy (foo, bar);
}
----- End -----

----- Begin -----
main() {
        char * foo = NULL;
        char * bar = (char *) malloc(100 * sizeof(char));
        if (bar == NULL) exit(1);
        strcpy (bar, foo);
}
----- End -----

>I personally prefer getting a SIGSEGV so that I can clean up my code. 
>8-)

Agreed.

Take care,
-- Nick Kralevich
   nickkral@cory.eecs.berkeley.edu