Bug:
Some networking functions take a pointer to a length.
These are supposed to be size_t, not int.
OSes/Compiler:
These fixes were needed to make Amanda 2.4.1p1 compile
on one of the platforms (below). These changes were
carried forward to 2.4.2. I am not sure which platform
required this change, but this same code was subsequently
used to compile successfully on:
Solaris 2.4 gcc
Solaris 2.5.1 gcc
Solaris 2.6 gcc
Solaris 8 cc
AIX4.2.1 cc
AIX4.3.3 cc
FreeBSD3.x cc
HP-UX9.05 cc
HP-UX10.02 cc
Linux2.2 gcc
Unixware2.1 cc
Hardware:
Irrelevant, but Exabyte 230D.
Index: restore-src/amidxtaped.c
===================================================================
RCS file: /u/itsrc/cvs/backup/amanda/restore-src/amidxtaped.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -u -r1.1.1.2 -r1.1.1.2.2.1
--- amidxtaped.c 2000/11/27 21:25:32 1.1.1.2
+++ amidxtaped.c 2000/11/27 22:11:22 1.1.1.2.2.1
@@ -97,6 +97,7 @@
char **amrestore_args;
char *buf = NULL;
int i;
+ size_t addrlen;
char *amrestore_path;
pid_t pid;
int isafile;
@@ -166,8 +167,8 @@
}
#endif
- i = sizeof (addr);
- if (getpeername(0, (struct sockaddr *)&addr, &i) == -1)
+ addrlen = sizeof (addr);
+ if (getpeername(0, (struct sockaddr *)&addr, &addrlen) == -1)
error("getpeername: %s", strerror(errno));
if (addr.sin_family != AF_INET || ntohs(addr.sin_port) == 20) {
error("connection rejected from %s family %d port %d",
Index: common-src/dgram.c
===================================================================
RCS file: /u/itsrc/cvs/backup/amanda/common-src/dgram.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -u -r1.1.1.2 -r1.1.1.2.2.1
--- dgram.c 2000/11/27 21:24:38 1.1.1.2
+++ dgram.c 2000/11/27 22:11:20 1.1.1.2.2.1
@@ -49,7 +49,8 @@
dgram_t *dgram;
int *portp;
{
- int s, len;
+ int s;
+ size_t len;
struct sockaddr_in name;
if((s = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
@@ -158,7 +159,8 @@
{
fd_set ready;
struct timeval to;
- int size, addrlen, sock;
+ int size, sock;
+ size_t addrlen;
sock = dgram->socket;
Index: common-src/stream.c
===================================================================
RCS file: /u/itsrc/cvs/backup/amanda/common-src/stream.c,v
retrieving revision 1.1.1.2
retrieving revision 1.1.1.2.2.1
diff -u -r1.1.1.2 -r1.1.1.2.2.1
--- stream.c 2000/11/27 21:24:45 1.1.1.2
+++ stream.c 2000/11/27 22:11:21 1.1.1.2.2.1
@@ -41,7 +41,8 @@
int *portp;
int sendsize, recvsize;
{
- int server_socket, len;
+ int server_socket;
+ size_t len;
#ifdef SO_KEEPALIVE
int on = 1;
int r;
@@ -211,7 +212,7 @@
/* don't care about these values */
static struct sockaddr_in addr;
-static int addrlen;
+static size_t addrlen;
int stream_accept(server_socket, timeout, sendsize, recvsize)
int server_socket, timeout, sendsize, recvsize;