low level - C, write system call, writing int -



low level - C, write system call, writing int -

i found source in jon erickson's book, hacking: fine art of exploitation,

userid = getuid(); // real user id // writing info if(write(fd, &userid, 4) == -1) // write user id before note info fatal("in main() while writing userid file"); write(fd, "\n", 1); // terminate line

i tried compile code, , found on file write, userid (which write in code above) not right; wrote unusual character (i think not of import write here). problem trying pass int function required char *, because of result on file want write false.

so bug, right?

the write() function expects void * buffer; writes arbitrary binary data. if need conversion string, utilize printf().

you don't show declaration of userid, write() line should written as:

if (write(fd, &userid, sizeof(userid)) != sizeof(userid))

this observe short writes (unlikely problem integer type) , other problems, , works correctly regardless of type of userid. original version of line arguably buggy, therefore. otherwise, bug seems in expectations rather code per se.

c low-level

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -