proot: Clear errno before ptrace(PTRACE_PEEKDATA)
[termux-packages] / disabled-packages / proot / src-tracee-mem.c.patch
CommitLineData
ab9c603c 1--- PRoot-5.1.0/src/tracee/mem.c 2014-12-15 15:18:11.000000000 +0100
2+++ src/src/tracee/mem.c 2016-03-20 10:37:46.288702967 +0100
3@@ -131,6 +131,9 @@
4 /* Copy the bytes in the last word carefully since we have to
5 * overwrite only the relevant ones. */
6
7+ /* Clear errno so we won't detect previous syscall failure as ptrace one */
8+ errno = 0;
9+
10 word = ptrace(PTRACE_PEEKDATA, tracee->pid, dest + i, NULL);
11 if (errno != 0) {
12 note(tracee, WARNING, SYSTEM, "ptrace(PEEKDATA)");
13@@ -236,6 +239,9 @@
14 nb_trailing_bytes = size % sizeof(word_t);
15 nb_full_words = (size - nb_trailing_bytes) / sizeof(word_t);
16
17+ /* Clear errno so we won't detect previous syscall failure as ptrace one */
18+ errno = 0;
19+
20 /* Copy one word by one word, except for the last one. */
21 for (i = 0; i < nb_full_words; i++) {
22 word = ptrace(PTRACE_PEEKDATA, tracee->pid, src + i, NULL);
23@@ -366,6 +372,9 @@
24 nb_trailing_bytes = max_size % sizeof(word_t);
25 nb_full_words = (max_size - nb_trailing_bytes) / sizeof(word_t);
26
27+ /* Clear errno so we won't detect previous syscall failure as ptrace one */
28+ errno = 0;
29+
30 /* Copy one word by one word, except for the last one. */
31 for (i = 0; i < nb_full_words; i++) {
32 word = ptrace(PTRACE_PEEKDATA, tracee->pid, src + i, NULL);