4 ms·
It's not the logic of hammering my own fingers that is flawed, it is my choice of a hammer!
by mfukar 10y ago
It's not the logic of hammering my own fingers that is flawed, it is my choice of a hammer!
- adrianN 10y agoYou can program touch() to create files with 0777 rights in any language, not just C.
- throwawayish 10y agoAlthough the specific cause -- (mode_t)-1 -- is something that you can't really do in many languages. So you'd likely have to write 0777 or equivalent explicitly down, making it so much more obvious what a bad idea that is.
- kps 10y agoIt's one part of a cascade of errors. The author(s) defined an opaque MODE_INVALID but wrote code depending on their 'knowledge' of its underlying value. Signed/unsigned confusion is typical of C, though. The 'fixed' code¹ has the property that calling it to create a file with mode==0 (i.e. no permissions) actually creates one with mode==0644 (i.e. some permissions), which is a wtf r u doin that can't be blamed on C. ¹ https://github.com/systemd/systemd/commit/06eeacb6fe029804f296b065b3ce91e796e1cd0e https://github.com/systemd/systemd/commit/06eeacb6fe029804f2...
- mfukar 10y agoIsn't that what I said?
- theamk 10y agoYes, but other languages would use optional or special null-like value which cannot be automatically converted into integer.