aboutsummaryrefslogtreecommitdiffstats
path: root/main/musl/0019-fix-tsearch-tfind-tdelete-to-handle-null-pointer-inp.patch
diff options
context:
space:
mode:
authorTimo Teräs <timo.teras@iki.fi>2016-01-08 09:18:11 +0200
committerTimo Teräs <timo.teras@iki.fi>2016-01-08 09:21:58 +0200
commit8a4ccf53a605414546a73d39dda24fe95c1bc1b2 (patch)
tree9dfd741e819a102716237fab07aa65b07a6ce4ba /main/musl/0019-fix-tsearch-tfind-tdelete-to-handle-null-pointer-inp.patch
parent7d84a0410e406fd7edd9f82c0c83a39ad222201e (diff)
downloadaports-8a4ccf53a605414546a73d39dda24fe95c1bc1b2.tar.bz2
aports-8a4ccf53a605414546a73d39dda24fe95c1bc1b2.tar.xz
main/musl: cherry-pick upstream fixes and improvements
fixes #4621
Diffstat (limited to 'main/musl/0019-fix-tsearch-tfind-tdelete-to-handle-null-pointer-inp.patch')
-rw-r--r--main/musl/0019-fix-tsearch-tfind-tdelete-to-handle-null-pointer-inp.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/main/musl/0019-fix-tsearch-tfind-tdelete-to-handle-null-pointer-inp.patch b/main/musl/0019-fix-tsearch-tfind-tdelete-to-handle-null-pointer-inp.patch
new file mode 100644
index 0000000000..a6ea0ad753
--- /dev/null
+++ b/main/musl/0019-fix-tsearch-tfind-tdelete-to-handle-null-pointer-inp.patch
@@ -0,0 +1,45 @@
+From 3abb094d19ca4c7c4adcf373d971fb5aa05c5252 Mon Sep 17 00:00:00 2001
+From: Szabolcs Nagy <nsz@port70.net>
+Date: Sat, 5 Dec 2015 21:53:59 +0100
+Subject: [PATCH] fix tsearch, tfind, tdelete to handle null pointer input
+
+POSIX specifies the behaviour for null rootp input, but it
+was not implemented correctly.
+---
+ src/search/tsearch_avl.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/search/tsearch_avl.c b/src/search/tsearch_avl.c
+index e4fb131..57194c8 100644
+--- a/src/search/tsearch_avl.c
++++ b/src/search/tsearch_avl.c
+@@ -151,6 +151,8 @@ static struct node *remove(struct node **n, const void *k,
+ void *tdelete(const void *restrict key, void **restrict rootp,
+ int(*compar)(const void *, const void *))
+ {
++ if (!rootp)
++ return 0;
+ struct node *n = *rootp;
+ struct node *ret;
+ /* last argument is arbitrary non-null pointer
+@@ -163,6 +165,8 @@ void *tdelete(const void *restrict key, void **restrict rootp,
+ void *tfind(const void *key, void *const *rootp,
+ int(*compar)(const void *, const void *))
+ {
++ if (!rootp)
++ return 0;
+ return find(*rootp, key, compar);
+ }
+
+@@ -171,6 +175,8 @@ void *tsearch(const void *key, void **rootp,
+ {
+ struct node *update;
+ struct node *ret;
++ if (!rootp)
++ return 0;
+ update = insert(*rootp, key, compar, &ret);
+ if (update)
+ *rootp = update;
+--
+2.7.0
+