> The canary is pretty clever: it starts with a null byte so that it won’t be leaked by normal string functions
Doesn't that also mean it won't be overwritten by string functions, masking certain bugs? Would it be better to make the nul byte the second one, so that only one byte can be leaked, but certain program bugs that wouldn't otherwise will be exposed?