diff options
author | Mandar Gokhale <mandarg@mandarg.com> | 2018-10-05 06:27:33 +0000 |
---|---|---|
committer | Tobias Klauser <tobias.klauser@gmail.com> | 2018-11-30 11:30:56 +0100 |
commit | 8c11a4e50df3c31a60500c04fed899e3773e9a17 (patch) | |
tree | 4e9a46286f735c4d49b1aaf5ebdbfc26b2175b13 | |
parent | f79d3ab1dee474740ba7ad119fd8a86a73a796bc (diff) |
astraceroute: Fix for reading mirrors from file
If the file that GeoIP mirror addresses are being read from lacks a
terminating newline, then the code that reads them in exhibits an
off-by-one error.
Example of such a file:
$ xxd /etc/netsniff-ng/geoip.conf
00000000: 6765 6f6c 6974 652e 6d61 786d 696e 642e geolite.maxmind.
00000010: 636f 6d com
Fix this by explicitly getting the part of the string before the
newline using `strcspn`.
Signed-off-by: Mandar Gokhale <mandarg@mandarg.com>
-rw-r--r-- | geoip.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -630,8 +630,8 @@ static void init_mirrors(void) memset(buff, 0, sizeof(buff)); while (fgets(buff, sizeof(buff), fp) != NULL && i < array_size(servers)) { - buff[sizeof(buff) - 1] = 0; - buff[strlen(buff) - 1] = 0; + buff[strcspn(buff, "\r\n")] = 0; + buff[strcspn(buff, "\r\n")] = 0; if (buff[0] == '#') { memset(buff, 0, sizeof(buff)); |