|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
Don't open a new socket without closing a possibly already-open one. RT#5597.
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
diff -uNr krb5/src/appl/gssftp/ftp/ftp.c krb5/src/appl/gssftp/ftp/ftp.c
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
--- krb5/src/appl/gssftp/ftp/ftp.c
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+++ krb5/src/appl/gssftp/ftp/ftp.c
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
@@ -196,7 +196,7 @@ char *
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
hookup(char* host, int port)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
{
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
register struct hostent *hp = 0;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
- int s;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ int s, t;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
socklen_t len;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#ifdef IP_TOS
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#ifdef IPTOS_LOWDELAY
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
@@ -274,8 +274,13 @@ hookup(char* host, int port)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
}
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#endif
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#endif
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+#ifndef _WIN32
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ t = dup(s);
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+#else
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ t = s;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+#endif
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
cin = FDOPEN_SOCKET(s, "r");
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
- cout = FDOPEN_SOCKET(s, "w");
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ cout = FDOPEN_SOCKET(t, "w");
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
if (cin == NULL || cout == NULL) {
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
fprintf(stderr, "ftp: fdopen failed.\n");
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
if (cin) {
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
@@ -1448,6 +1453,8 @@
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
int a1,a2,a3,a4,p1,p2;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
if (passivemode) {
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ if (data != INVALID_SOCKET)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ (void) closesocket(data);
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
data = socket(AF_INET, SOCK_STREAM, 0);
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
if (data == INVALID_SOCKET) {
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
PERROR_SOCKET("ftp: socket");
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
@@ -2366,4 +2371,16 @@ FILE* fdopen_socket(SOCKET s, char* mode
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
return f;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
}
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+#else
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+/* Non-Win32 case takes the address of the variable so that we can "take
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ * ownership" of the descriptor number. */
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+FILE* fdopen_socket(int *s, char* mode)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+{
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ FILE *fp;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ fp = fdopen(*s, mode);
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ if (fp) {
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ *s = INVALID_SOCKET;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+ return fp;
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+}
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#endif /* _WIN32 */
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
diff -up krb5-1.3.4/src/appl/gssftp/ftp/ftp_var.h krb5-1.3.4/src/appl/gssftp/ftp/ftp_var.h
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
--- krb5-1.3.4/src/appl/gssftp/ftp/ftp_var.h 2007-08-03 00:53:35.000000000 -0400
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+++ krb5-1.3.4/src/appl/gssftp/ftp/ftp_var.h 2007-08-03 00:53:39.000000000 -0400
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
@@ -48,7 +48,8 @@ FILE* fdopen_socket(SOCKET s, char* mode
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#define PERROR_SOCKET(str) do { errno = SOCKET_ERRNO; perror(str); } while(0)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#else
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#define FCLOSE_SOCKET(f) fclose(f)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
-#define FDOPEN_SOCKET(s, mode) fdopen(s, mode)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+FILE* fdopen_socket(int *s, char* mode);
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
+#define FDOPEN_SOCKET(s, mode) fdopen_socket(&s, mode)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#define SOCKETNO(fd) (fd)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#define PERROR_SOCKET(str) perror(str)
|
|
![](https://seccdn.libravatar.org/avatar/830d03208be58a30581b9ec914163ac3247fea9d7b90dfa476b86f1ed9183af9?s=16&d=retro) |
2cc4303 |
#endif
|