qzzi
Joined 31 karma
- qzziI've been hacking professionally for 30 years and I know what to look for. Anthropic's report is garbage. Period.
- Compared to what? What gives you all that, and what prevents you from having it with tables?
- I'm pretty sure they're talking about reference counting that depends on the arguments, not about optional arguments or invalid argument combinations.
- C and Python automatically concatenate string literals, and Rust has the concat! macro. There's no problem just writing it in a way that works correctly with any indentation. No need for weird-strings.
" one\n" " two\n" " three\n" - They aren't comparing those crimes. You don't get to pick and choose where laws should matter based on whether you personally like the item being banned. Your "bad guys will do it anyway" argument doesn’t hold.
- The point is obviously that the counter is centralized, and it relates to the previous example where is no concurrency. The need for synchronization when sharing data across threads is mentioned just below that.
- In the right place, but maybe at the wrong time. You can expect +1 and always be right, when the value should be +10.
- No, the debugger does not get involved in preprocessing. When you write "a = __LINE__;", it expands to "a = 10;" (or whatever number) and is compiled, and the debugger has no knowledge of it. Debugging information, including the mapping of positions in the code to positions in the source, is generated by the compiler and embedded directly into the generated binary or an external file, from which the debugger reads it.
The __LINE__ macro is passed to the debugger only if the program itself outputs its value, and the "debugger" is a human reading that output :)
- The __LINE__ macro, like all other macros, is expanded during the preprocessing of the source code and is not handed to the debugger in any way.
- This is the place where the listening socket is initialized, and you can see that if the port is 0, it doesn't do anything. Are you observing different behavior?
- It is a commercial product and it is their goodwill to offer licenses for free. They don't have to do it at all, Mr. Entitled.
- > you know any actual tab character in the input is a field separator, and then you can go through the fields to put back the escaped ones
The "\t" in "split" is not a "slash-tee" but an actual tab character and then escape sequences in fields are handled by the "unescape" function.
- No.
- I don't know how they define `MAX`, but I'm guessing it's a typical "a>b?a:b". In function `elf_read_pintable` the `npins` is defined as signed int and `sysno` as unsigned int.
So this comparison will be unsigned and will allow to set `npins` to any value, even negative:
Then `SYS_kbind` seems to be a signed int. So this comparison will be signed and "fix" the negative `npins` to `SYS_kbind`:npins = MAX(npins, syscalls[i].sysno)
And finally the `sysno` index might be out of bounds here:npins = MAX(npins, SYS_kbind)
But maybe I'm completely wrong, I'm not interested in researching it too much.pins[syscalls[i].sysno] = syscalls[i].offset