better workaround against PF_LOCAL.

This commit is contained in:
Hajimu UMEMOTO 2003-01-22 14:30:20 +00:00
parent c34b11a2c1
commit 90fd9a1b44
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=73782
9 changed files with 74 additions and 122 deletions

View file

@ -1,22 +1,14 @@
Index: master/service.c
===================================================================
RCS file: /usr/home/ume/ncvs/src/cyrus-imapd/master/service.c,v
retrieving revision 1.2
diff -u -r1.2 service.c
--- master/service.c 2001/02/01 14:11:43 1.2
+++ master/service.c 2001/02/01 22:10:35
@@ -99,7 +99,13 @@
diff -u master/service.c.orig master/service.c
--- master/service.c.orig Wed Jan 22 22:52:36 2003
+++ master/service.c Wed Jan 22 22:57:20 2003
@@ -102,6 +102,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+#ifdef INET6
+ case AF_INET6:
+#endif
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {

View file

@ -1,19 +1,14 @@
Index: master/service.c
diff -u master/service.c.orig master/service.c
--- master/service.c.orig Thu Aug 15 06:02:41 2002
+++ master/service.c Fri Aug 16 00:28:31 2002
@@ -103,8 +103,13 @@
--- master/service.c.orig Wed Jan 22 22:52:36 2003
+++ master/service.c Wed Jan 22 22:57:20 2003
@@ -102,6 +102,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
+ memset(&sin, 0, len);
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {

View file

@ -1,19 +1,14 @@
Index: master/service-thread.c
diff -u master/service-thread.c.orig master/service-thread.c
--- master/service-thread.c.orig Fri Sep 13 18:43:06 2002
+++ master/service-thread.c Fri Sep 13 19:15:50 2002
@@ -100,8 +100,13 @@
--- master/service-thread.c.orig Wed Jan 22 22:52:36 2003
+++ master/service-thread.c Wed Jan 22 23:09:52 2003
@@ -99,6 +99,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
+ memset(&sin, 0, len);
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {

View file

@ -1,19 +1,14 @@
Index: master/service.c
diff -u master/service.c.orig master/service.c
--- master/service.c.orig Thu Aug 15 06:02:41 2002
+++ master/service.c Fri Aug 16 00:28:31 2002
@@ -103,8 +103,13 @@
--- master/service.c.orig Wed Jan 22 22:52:36 2003
+++ master/service.c Wed Jan 22 22:57:20 2003
@@ -102,6 +102,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
+ memset(&sin, 0, len);
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {

View file

@ -1,19 +1,14 @@
Index: master/service-thread.c
diff -u master/service-thread.c.orig master/service-thread.c
--- master/service-thread.c.orig Fri Sep 13 18:43:06 2002
+++ master/service-thread.c Fri Sep 13 19:15:50 2002
@@ -100,8 +100,13 @@
--- master/service-thread.c.orig Wed Jan 22 22:52:36 2003
+++ master/service-thread.c Wed Jan 22 23:09:52 2003
@@ -99,6 +99,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
+ memset(&sin, 0, len);
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {

View file

@ -1,19 +1,14 @@
Index: master/service.c
diff -u master/service.c.orig master/service.c
--- master/service.c.orig Thu Aug 15 06:02:41 2002
+++ master/service.c Fri Aug 16 00:28:31 2002
@@ -103,8 +103,13 @@
--- master/service.c.orig Wed Jan 22 22:52:36 2003
+++ master/service.c Wed Jan 22 22:57:20 2003
@@ -102,6 +102,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
+ memset(&sin, 0, len);
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {

View file

@ -1,19 +1,14 @@
Index: master/service-thread.c
diff -u master/service-thread.c.orig master/service-thread.c
--- master/service-thread.c.orig Fri Sep 13 18:43:06 2002
+++ master/service-thread.c Fri Sep 13 19:15:50 2002
@@ -100,8 +100,13 @@
--- master/service-thread.c.orig Wed Jan 22 22:52:36 2003
+++ master/service-thread.c Wed Jan 22 23:09:52 2003
@@ -99,6 +99,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
+ memset(&sin, 0, len);
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {

View file

@ -1,19 +1,14 @@
Index: master/service.c
diff -u master/service.c.orig master/service.c
--- master/service.c.orig Thu Aug 15 06:02:41 2002
+++ master/service.c Fri Aug 16 00:28:31 2002
@@ -103,8 +103,13 @@
--- master/service.c.orig Wed Jan 22 22:52:36 2003
+++ master/service.c Wed Jan 22 22:57:20 2003
@@ -102,6 +102,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
+ memset(&sin, 0, len);
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {

View file

@ -1,19 +1,14 @@
Index: master/service-thread.c
diff -u master/service-thread.c.orig master/service-thread.c
--- master/service-thread.c.orig Fri Sep 13 18:43:06 2002
+++ master/service-thread.c Fri Sep 13 19:15:50 2002
@@ -100,8 +100,13 @@
--- master/service-thread.c.orig Wed Jan 22 22:52:36 2003
+++ master/service-thread.c Wed Jan 22 23:09:52 2003
@@ -99,6 +99,9 @@
struct sockaddr_storage sin;
socklen_t len = sizeof(sin);
+ /* XXX: old FreeBSD didn't fill sockaddr correctly against AF_UNIX */
+ sin.ss_family = AF_UNIX;
+
/* is this a connection from the local host? */
+ memset(&sin, 0, len);
if (getpeername(fd, (struct sockaddr *) &sin, &len) == 0) {
- if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {
+ switch (((struct sockaddr *)&sin)->sa_family) {
+ case AF_INET:
+ case AF_INET6:
+ break;
+ default:
return 1;
}
}
if (((struct sockaddr *)&sin)->sa_family == AF_UNIX) {