chiark / gitweb /
Fix coredump bug. debian_version_1_1_5
authorian <ian>
Mon, 31 Aug 1998 14:32:49 +0000 (14:32 +0000)
committerian <ian>
Mon, 31 Aug 1998 14:32:49 +0000 (14:32 +0000)
debian/changelog
libauthbind.c

index e7453edd194941bf7a40c2510c28a7fa8c3e46fe..457d95a1acaa5355ab9d99fa251610c62e3b6b64 100644 (file)
@@ -1,3 +1,9 @@
+authbind (1.1.5) unstable; urgency=low
+
+  * Fix coredump bug !
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk>  Mon, 31 Aug 1998 15:32:44 +0100
+
 authbind (1.1.4) unstable; urgency=low
 
   * Allow bind() to port 0 !
 authbind (1.1.4) unstable; urgency=low
 
   * Allow bind() to port 0 !
index c8f34227388659c4743b8b706c77a269f34da761..dc004a33ad3fb4ab7dc308099f5b20c72b50f91b 100644 (file)
@@ -40,13 +40,11 @@ typedef int bindfn_type(int fd, const struct sockaddr *addr, socklen_t addrlen);
 #define STDERRSTR_CONST(m) write(2,m,sizeof(m)-1)
 #define STDERRSTR_STRING(m) write(2,m,strlen(m))
 
 #define STDERRSTR_CONST(m) write(2,m,sizeof(m)-1)
 #define STDERRSTR_STRING(m) write(2,m,strlen(m))
 
-static int find_any(const char *name, anyfn_type **keep) {
+static anyfn_type *find_any(const char *name) {
   static const char *dlerr;
   anyfn_type *kv;
 
   static const char *dlerr;
   anyfn_type *kv;
 
-  if (*keep) return 0;
-  kv= dlsym(RTLD_NEXT,name);
-  if (kv) { *keep= kv; return 0; }
+  kv= dlsym(RTLD_NEXT,name); if (kv) return kv;
   dlerr= dlerror(); if (!dlerr) dlerr= "dlsym() failed for no reason";
   STDERRSTR_CONST("libauthbind: error finding original version of ");
   STDERRSTR_STRING(name);
   dlerr= dlerror(); if (!dlerr) dlerr= "dlsym() failed for no reason";
   STDERRSTR_CONST("libauthbind: error finding original version of ");
   STDERRSTR_STRING(name);
@@ -54,14 +52,14 @@ static int find_any(const char *name, anyfn_type **keep) {
   STDERRSTR_STRING(dlerr);
   STDERRSTR_STRING("\n");
   errno= ENOSYS;
   STDERRSTR_STRING(dlerr);
   STDERRSTR_STRING("\n");
   errno= ENOSYS;
-  return -1;
+  return 0;
 }
 
 static bindfn_type find_bind, *old_bind= find_bind;
 
 int find_bind(int fd, const struct sockaddr *addr, socklen_t addrlen) {
   anyfn_type *anyfn;
 }
 
 static bindfn_type find_bind, *old_bind= find_bind;
 
 int find_bind(int fd, const struct sockaddr *addr, socklen_t addrlen) {
   anyfn_type *anyfn;
-  if (find_any("bind",&anyfn)) return -1;
+  anyfn= find_any("bind"); if (!anyfn) return -1;
   old_bind= (bindfn_type*)anyfn;
   return old_bind(fd,addr,addrlen);
 }
   old_bind= (bindfn_type*)anyfn;
   return old_bind(fd,addr,addrlen);
 }