Skip to content

Commit

Permalink
Fix ltrace under glibc 2.24.
Browse files Browse the repository at this point in the history
GLIBC 2.24 declared readdir_r as deprecated and suggests to use readdir.
uClibc-ng's readdir is thread-safe as well.

Signed-off-by: Alexey Neyman <stilor@att.net>
  • Loading branch information
stilor committed Nov 13, 2016
1 parent 8fbe000 commit 2fe9c86
Showing 1 changed file with 28 additions and 0 deletions.
28 changes: 28 additions & 0 deletions patches/ltrace/0.7.3/008-glibc-2.24.patch
@@ -0,0 +1,28 @@
diff -urpN ltrace-0.7.3.orig/sysdeps/linux-gnu/proc.c ltrace-0.7.3/sysdeps/linux-gnu/proc.c
--- ltrace-0.7.3.orig/sysdeps/linux-gnu/proc.c 2013-01-02 06:24:46.000000000 -0800
+++ ltrace-0.7.3/sysdeps/linux-gnu/proc.c 2016-11-13 11:24:32.760365875 -0800
@@ -240,14 +240,18 @@ process_tasks(pid_t pid, pid_t **ret_tas
size_t alloc = 0;

while (1) {
- struct dirent entry;
struct dirent *result;
- if (readdir_r(d, &entry, &result) != 0) {
- free(tasks);
- return -1;
- }
- if (result == NULL)
+
+ errno = 0;
+ result = readdir(d);
+ if (result == NULL) {
+ if (errno) {
+ free(tasks);
+ closedir(d);
+ return -1;
+ }
break;
+ }
if (result->d_type == DT_DIR && all_digits(result->d_name)) {
pid_t npid = atoi(result->d_name);
if (n >= alloc) {

0 comments on commit 2fe9c86

Please sign in to comment.