about summary refs log tree commit diff
diff options
context:
space:
mode:
authorRoland McGrath <roland@hack.frob.com>2013-04-19 13:49:07 -0700
committerRoland McGrath <roland@hack.frob.com>2013-04-19 14:57:25 -0700
commit0d3158a3c122d48d65c4bd62c5ae8dc52b900422 (patch)
tree7e896c581aa105e47aa0dcb4eb8e80f1c43dd422
parent7214d558d3a63e9c7b638787953ab1fe80c4adc1 (diff)
downloadglibc-roland/pthread_attr_getstack.tar.gz
glibc-roland/pthread_attr_getstack.tar.xz
glibc-roland/pthread_attr_getstack.zip
Make pthread_attr_getstack fail with EINVAL when called in "unspecified behavior" situation wherein the stackaddr was never set. roland/pthread_attr_getstack
-rw-r--r--nptl/ChangeLog5
-rw-r--r--nptl/pthread_attr_getstack.c3
2 files changed, 8 insertions, 0 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index d2a1e477e4..85f0c40ffc 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,8 @@
+2013-04-19  Roland McGrath  <roland@hack.frob.com>
+
+	* pthread_attr_getstack.c: Fail with EINVAL if the stack address has
+	not been set.
+
 2013-04-11  Andreas Schwab  <schwab@suse.de>
 
 	* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
diff --git a/nptl/pthread_attr_getstack.c b/nptl/pthread_attr_getstack.c
index 03907b7242..696d8c07f6 100644
--- a/nptl/pthread_attr_getstack.c
+++ b/nptl/pthread_attr_getstack.c
@@ -31,6 +31,9 @@ __pthread_attr_getstack (attr, stackaddr, stacksize)
   assert (sizeof (*attr) >= sizeof (struct pthread_attr));
   iattr = (struct pthread_attr *) attr;
 
+  if (!(iattr->flags & ATTR_FLAG_STACKADDR))
+    return EINVAL;
+
   /* Store the result.  */
   *stackaddr = (char *) iattr->stackaddr - iattr->stacksize;
   *stacksize = iattr->stacksize;