verbose-numeric-port.patch 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. Index: netcat-openbsd-1.89/netcat.c
  2. ===================================================================
  3. --- netcat-openbsd-1.89.orig/netcat.c 2008-01-22 16:17:34.000000000 -0500
  4. +++ netcat-openbsd-1.89/netcat.c 2008-01-22 16:17:44.000000000 -0500
  5. @@ -41,6 +41,7 @@
  6. #include <netinet/tcp.h>
  7. #include <netinet/ip.h>
  8. #include <arpa/telnet.h>
  9. +#include <arpa/inet.h>
  10. #include <err.h>
  11. #include <errno.h>
  12. @@ -317,16 +318,15 @@
  13. if (uflag) {
  14. int rv, plen;
  15. char buf[8192];
  16. - struct sockaddr_storage z;
  17. - len = sizeof(z);
  18. + len = sizeof(cliaddr);
  19. plen = jflag ? 8192 : 1024;
  20. rv = recvfrom(s, buf, plen, MSG_PEEK,
  21. - (struct sockaddr *)&z, &len);
  22. + (struct sockaddr *)&cliaddr, &len);
  23. if (rv < 0)
  24. err(1, "recvfrom");
  25. - rv = connect(s, (struct sockaddr *)&z, len);
  26. + rv = connect(s, (struct sockaddr *)&cliaddr, len);
  27. if (rv < 0)
  28. err(1, "connect");
  29. @@ -337,6 +337,21 @@
  30. &len);
  31. }
  32. + if(vflag) {
  33. + /* Don't look up port if -n. */
  34. + if (nflag)
  35. + sv = NULL;
  36. + else
  37. + sv = getservbyport(ntohs(atoi(uport)),
  38. + uflag ? "udp" : "tcp");
  39. +
  40. + fprintf(stderr, "Connection from %s port %s [%s/%s] accepted\n",
  41. + inet_ntoa(((struct sockaddr_in *)(&cliaddr))->sin_addr),
  42. + uport,
  43. + uflag ? "udp" : "tcp",
  44. + sv ? sv->s_name : "*");
  45. + }
  46. +
  47. readwrite(connfd);
  48. close(connfd);
  49. if (family != AF_UNIX)