Commit 006c891f authored by Anthony Liguori's avatar Anthony Liguori
Browse files

Merge remote-tracking branch 'kiszka/queues/slirp' into staging

* kiszka/queues/slirp:
  slirp: Prevent sending ICMP error replies to source-only addresses
  slirp: Remove unused variable and unused code
parents 7718564b 6612db12
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -262,6 +262,11 @@ icmp_error(struct mbuf *msrc, u_char type, u_char code, int minsize,
#endif
  if(ip->ip_off & IP_OFFMASK) goto end_error;    /* Only reply to fragment 0 */

  /* Do not reply to source-only IPs */
  if ((ip->ip_src.s_addr & htonl(~(0xf << 28))) == 0) {
      goto end_error;
  }

  shlen=ip->ip_hl << 2;
  s_ip_len=ip->ip_len;
  if(ip->ip_p == IPPROTO_ICMP) {
+26 −41
Original line number Diff line number Diff line
@@ -113,7 +113,6 @@ fork_exec(struct socket *so, const char *ex, int do_pty)
	struct sockaddr_in addr;
	socklen_t addrlen = sizeof(addr);
	int opt;
        int master = -1;
	const char *argv[256];
	/* don't want to clobber the original */
	char *bptr;
@@ -148,20 +147,12 @@ fork_exec(struct socket *so, const char *ex, int do_pty)
	 case -1:
		lprint("Error: fork failed: %s\n", strerror(errno));
		close(s);
		if (do_pty == 2)
		   close(master);
		return 0;

	 case 0:
                setsid();

		/* Set the DISPLAY */
		if (do_pty == 2) {
			(void) close(master);
#ifdef TIOCSCTTY /* XXXXX */
			ioctl(s, TIOCSCTTY, (char *)NULL);
#endif
		} else {
                getsockname(s, (struct sockaddr *)&addr, &addrlen);
                close(s);
                /*
@@ -173,7 +164,6 @@ fork_exec(struct socket *so, const char *ex, int do_pty)
                do {
                    ret = connect(s, (struct sockaddr *)&addr, addrlen);
                } while (ret < 0 && errno == EINTR);
		}

		dup2(s, 0);
		dup2(s, 1);
@@ -210,10 +200,6 @@ fork_exec(struct socket *so, const char *ex, int do_pty)

	 default:
		qemu_add_child_watch(pid);
		if (do_pty == 2) {
			close(s);
			so->s = master;
		} else {
                /*
                 * XXX this could block us...
                 * XXX Should set a timer here, and if accept() doesn't
@@ -229,7 +215,6 @@ fork_exec(struct socket *so, const char *ex, int do_pty)
                setsockopt(so->s, SOL_SOCKET, SO_REUSEADDR, (char *)&opt, sizeof(int));
                opt = 1;
                setsockopt(so->s, SOL_SOCKET, SO_OOBINLINE, (char *)&opt, sizeof(int));
		}
		fd_nonblock(so->s);

		/* Append the telnet options now */