summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/cov217_scanf5
-rw-r--r--src/common/compat_libevent.c4
-rw-r--r--src/or/geoip.c4
3 files changed, 9 insertions, 4 deletions
diff --git a/changes/cov217_scanf b/changes/cov217_scanf
new file mode 100644
index 0000000000..368bca825e
--- /dev/null
+++ b/changes/cov217_scanf
@@ -0,0 +1,5 @@
+ o Code simplification and refactoring:
+ - Use tor_sscanf in place of scanf in more places through the
+ code. This makes us a little more locale-independent, and
+ should help shut up code-analysis tools that can't tell
+ a safe sscanf string from a dangerous one.
diff --git a/src/common/compat_libevent.c b/src/common/compat_libevent.c
index e0c7e3a2da..c338dd6c05 100644
--- a/src/common/compat_libevent.c
+++ b/src/common/compat_libevent.c
@@ -264,7 +264,7 @@ tor_decode_libevent_version(const char *v)
/* Try the new preferred "1.4.11-stable" format.
* Also accept "1.4.14b-stable". */
- fields = sscanf(v, "%u.%u.%u%c%c", &major, &minor, &patchlevel, &c, &e);
+ fields = tor_sscanf(v, "%u.%u.%u%c%c", &major, &minor, &patchlevel, &c, &e);
if (fields == 3 ||
((fields == 4 || fields == 5 ) && (c == '-' || c == '_')) ||
(fields == 5 && TOR_ISALPHA(c) && (e == '-' || e == '_'))) {
@@ -272,7 +272,7 @@ tor_decode_libevent_version(const char *v)
}
/* Try the old "1.3e" format. */
- fields = sscanf(v, "%u.%u%c%c", &major, &minor, &c, &extra);
+ fields = tor_sscanf(v, "%u.%u%c%c", &major, &minor, &c, &extra);
if (fields == 3 && TOR_ISALPHA(c)) {
return V_OLD(major, minor, c);
} else if (fields == 2) {
diff --git a/src/or/geoip.c b/src/or/geoip.c
index 59490bdaf8..62c7a5c394 100644
--- a/src/or/geoip.c
+++ b/src/or/geoip.c
@@ -116,10 +116,10 @@ geoip_parse_entry(const char *line)
++line;
if (*line == '#')
return 0;
- if (sscanf(line,"%u,%u,%2s", &low, &high, b) == 3) {
+ if (tor_sscanf(line,"%u,%u,%2s", &low, &high, b) == 3) {
geoip_add_entry(low, high, b);
return 0;
- } else if (sscanf(line,"\"%u\",\"%u\",\"%2s\",", &low, &high, b) == 3) {
+ } else if (tor_sscanf(line,"\"%u\",\"%u\",\"%2s\",", &low, &high, b) == 3) {
geoip_add_entry(low, high, b);
return 0;
} else {