Skip to content

Commit 1f4e8a0

Browse files
committed
merge bitcoin#23538: Remove strtol in torcontrol
1 parent 2318d9f commit 1f4e8a0

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

src/torcontrol.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,13 @@
2121
#include <deque>
2222
#include <functional>
2323
#include <set>
24-
#include <stdlib.h>
2524
#include <vector>
2625

27-
#include <boost/signals2/signal.hpp>
28-
29-
#include <event2/bufferevent.h>
3026
#include <event2/buffer.h>
31-
#include <event2/util.h>
27+
#include <event2/bufferevent.h>
3228
#include <event2/event.h>
3329
#include <event2/thread.h>
30+
#include <event2/util.h>
3431

3532
/** Default control port */
3633
const std::string DEFAULT_TOR_CONTROL = "127.0.0.1:9051";
@@ -273,9 +270,15 @@ std::map<std::string,std::string> ParseTorReplyMapping(const std::string &s)
273270
if (j == 3 && value[i] > '3') {
274271
j--;
275272
}
276-
escaped_value.push_back(strtol(value.substr(i, j).c_str(), nullptr, 8));
273+
const auto end{i + j};
274+
uint8_t val{0};
275+
while (i < end) {
276+
val *= 8;
277+
val += value[i++] - '0';
278+
}
279+
escaped_value.push_back(char(val));
277280
// Account for automatic incrementing at loop end
278-
i += j - 1;
281+
--i;
279282
} else {
280283
escaped_value.push_back(value[i]);
281284
}

test/lint/lint-locale-dependence.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ KNOWN_VIOLATIONS=(
4747
"src/test/dbwrapper_tests.cpp:.*snprintf"
4848
"src/test/fuzz/locale.cpp"
4949
"src/test/fuzz/string.cpp"
50-
"src/torcontrol.cpp:.*strtol"
5150
"src/util/strencodings.cpp:.*strtoll"
5251
"src/util/system.cpp:.*fprintf"
5352
)

0 commit comments

Comments
 (0)