X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Funix.c;h=73bd7c56f21303ae9924654daec85d679238dea6;hb=3b792849c676d96918850e2f1e0af87a75278501;hp=77cea3ce83253a38895dd45b3ad1c8382907d2e6;hpb=11dbebdf973d652e486f2b5e457cc46d1478556f;p=yaz-moved-to-github.git diff --git a/src/unix.c b/src/unix.c index 77cea3c..73bd7c5 100644 --- a/src/unix.c +++ b/src/unix.c @@ -1,8 +1,8 @@ /* - * Copyright (C) 1995-2005, Index Data ApS + * Copyright (C) 1995-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: unix.c,v 1.17 2006-09-06 15:01:53 adam Exp $ + * $Id: unix.c,v 1.20 2007-10-09 06:00:56 adam Exp $ * UNIX socket COMSTACK. By Morten Bøgeskov. */ /** @@ -90,7 +90,7 @@ typedef struct unix_state int written; /* -1 if we aren't writing */ int towrite; /* to verify against user input */ - int (*complete)(const unsigned char *buf, int len); /* length/comple. */ + int (*complete)(const char *buf, int len); /* length/complete. */ struct sockaddr_un addr; /* returned by cs_straddr */ int uid; int gid; @@ -185,7 +185,8 @@ static int unix_strtoaddr_ex(const char *str, struct sockaddr_un *add) return 0; TRC(fprintf(stderr, "unix_strtoaddress: %s\n", str ? str : "NULL")); add->sun_family = AF_UNIX; - strncpy(add->sun_path, str, sizeof(add->sun_path)); + strncpy(add->sun_path, str, sizeof(add->sun_path)-1); + add->sun_path[sizeof(add->sun_path)-1] = 0; cp = strchr (add->sun_path, ':'); if (cp) *cp = '\0'; @@ -308,8 +309,7 @@ static int unix_more(COMSTACK h) { unix_state *sp = (unix_state *)h->cprivate; - return sp->altlen && (*sp->complete)((unsigned char *) sp->altbuf, - sp->altlen); + return sp->altlen && (*sp->complete)(sp->altbuf, sp->altlen); } /* @@ -405,7 +405,8 @@ static int unix_bind(COMSTACK h, void *address, int mode) return -1; } socket_unix.sun_family = AF_UNIX; - strncpy(socket_unix.sun_path, path, sizeof(socket_unix.sun_path)); + strncpy(socket_unix.sun_path, path, sizeof(socket_unix.sun_path)-1); + socket_unix.sun_path[sizeof(socket_unix.sun_path)-1] = 0; if(connect(socket_out, (struct sockaddr *) &socket_unix, SUN_LEN(&socket_unix)) < 0) { if(yaz_errno() == ECONNREFUSED) { TRC (fprintf (stderr, "Socket exists but nobody is listening\n")); @@ -573,7 +574,7 @@ static int unix_get(COMSTACK h, char **buf, int *bufsize) sp->altsize = tmpi; } h->io_pending = 0; - while (!(berlen = (*sp->complete)((unsigned char *)*buf, hasread))) + while (!(berlen = (*sp->complete)(*buf, hasread))) { if (!*bufsize) {