Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

SIGSEGV for programs attempting to write files they don't have access to



Hey!

I just updated one of my domU:s to netbsd-9 (should be the head of netbsd-9 branch as of Feb 14, 'Welcome to NetBSD 9.0 - the "Valentine Release"')

My dom0 is still running 8.1 and all other domUs are running fine with various versions/operating systems as before.

This domU is my webserver, and both bacula-fd and apache crash upon startup, with a segmentation fault, bacula right away and apache's workers die and it stops spawning them.

I tried to narrow it down and bacula-fd would not crash if I started it manually as root, but if I added -g bacula, it crashed with a Memory fault.

The following program will always crash if nobody doesn't have access to write/create the file, but the file will get written(!):

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
        FILE *fp;

        printf("Changing uid...\n");

        setuid(32767); // nobody

        printf("Writing to file...\n");

        fp = fopen("test.txt", "w");
        fwrite("hello\n", 6, 1, fp);
        fclose(fp);

        printf("All done\n");

        return 0;
}

www# ./t
Changing uid...
Writing to file...
Memory fault

(gdb) run
Starting program: /root/t
Changing uid...
Writing to file...

Program received signal SIGSEGV, Segmentation fault.
0x00006fbeb9f67255 in __sfvwrite () from /usr/lib/libc.so.12
(gdb) where
#0  0x00006fbeb9f67255 in __sfvwrite () from /usr/lib/libc.so.12
#1  0x00006fbeb9f671ef in fwrite () from /usr/lib/libc.so.12
#2  0x0000000000400b35 in main (argc=1, argv=0x7f7fff9ff758) at test.c:14

www# chown nobody test.txt
www# ./t
Changing uid...
Writing to file...
All done

What's going on here? Is it just me?

Staffan


Home | Main Index | Thread Index | Old Index