3 ms·
* Using strncmp is more secure than strcmp. * What's the harm in `inline`? I would encourage its use, rather than discourage?
by alexchamberlain 14y ago
* Using strncmp is more secure than strcmp.
* What's the harm in `inline`? I would encourage its use, rather than discourage?
- jws 14y agoUsing strncmp is an error. It returns erroneous results if you are using NUL terminated strings and one or both strings is too long. At one time (shortly after the Morris worm) people flocked to using strncpy() for security. That was also an error. strncpy() will happily leave you with a missing NUL terminator, plus it has sad performance implications since it fills the whole destination with NUL, so if you make a "plenty big" buffer you do a lot of useless memory writing. To reiterate: The strnXXX functions are not for NUL terminated strings. They are for fixed size buffers of characters padded with optional NUL characters. As to "inline*. The compiler knows better and will probably ignore it anyway. I think the place where it is wanted is if you are declaring inline functions in header files. This prevents the duplicate function errors at link time that result if included in more than one object file. The standards and compilers are a mess on precisely how to do this.