Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
use dlsym instead of deprecated _dyld_lookup_and_bind
  • Loading branch information
tmm1 committed Sep 29, 2015
commit 2a15d429b83826295fd9773774ad729c4ccf49df
20 changes: 9 additions & 11 deletions libauthbind.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@
static const char *rcsid="$Id: libauthbind.c,v 1.8 2004-04-02 18:54:27 ian Exp $";

#include "authbind.h"
#ifdef __APPLE__
#include "mach_override.h"
#include "mach-o/dyld.h"
#endif

typedef void anyfn_type(void);
typedef int bindfn_type(int fd, const struct sockaddr *addr, socklen_t addrlen);
Expand Down Expand Up @@ -145,23 +146,20 @@ static void removepreload(void) {
return;
}

long *orig_bind_ptr;
void (*orig_bind)() = 0;
int mybind(int fd, const struct sockaddr *addr, socklen_t addrlen);

void my_init(void) __attribute__ ((constructor));
void my_init(void) {
_dyld_lookup_and_bind(
"_bind",
(void**) &orig_bind_ptr,
NULL);

orig_bind = (void (*)())orig_bind_ptr;
#ifdef __APPLE__
anyfn_type *anyfn;
anyfn = find_any("bind");
old_bind = (bindfn_type *) anyfn;

mach_override_ptr(
orig_bind_ptr,
anyfn,
(void*)&mybind,
(void**)&orig_bind);
(void**)&old_bind);
#endif

char *levels;
int levelno;
Expand Down