#define DEF_OLD(fn,rt,args) \
typedef rt fn##_fn_type(fn##_args); \
- static rt find_##fn(fn##_args); \
static fn##_fn_type find_##fn, *old_##fn=find_##fn; \
static rt find_##fn(fn##_args) { \
anyfn_type *anyfn; \
memset(sun,0,sizeof(*sun));
sun->sun_family=AF_UNIX;
- int dl = strlen(dir);
+ size_t dl = strlen(dir);
if (dl + 1 + ADDRPORTSTRLEN + 1 > sizeof(sun->sun_path)) {
errno=ENAMETOOLONG; return 0;
}
if (!ent) return old_bind(fd,addr,addrlen);
struct sockaddr_un sun;
char *p=sun_prep(&sun);
+ if (!p) return -1;
if (addrport2str(p,addr,addrlen)) return -1;
//fprintf(stderr,"binding %s\n",sun.sun_path);
if (unlink(sun.sun_path) && errno!=ENOENT) return -1;
if (strlen(leaf) > ADDRPORTSTRLEN) { errno=ENAMETOOLONG; return -1; }
struct sockaddr_un sun;
char *p=sun_prep(&sun);
+ if (!p) return -1;
strcpy(p,leaf);
char tbuf[ADDRPORTSTRLEN+1];
ssize_t rr=recvmsg(fd,&m,0);
if (rr==-1) return rr;
- if (rr<sizeof(tbuf)) { errno=ENXIO; return -1; }
+ if ((size_t)rr<sizeof(tbuf)) { errno=ENXIO; return -1; }
if (tbuf[ADDRPORTSTRLEN]) { errno=E2BIG; return -1; }
if (str2addrport(tbuf,addr,addrlen)) {
fprintf(stderr, "recvfrom str2addrport `%s' %s\n",tbuf,