From owner-svn-src-user@freebsd.org Mon Sep 2 07:52:40 2019 Return-Path: Delivered-To: svn-src-user@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 81DD4D4B56 for ; Mon, 2 Sep 2019 07:52:40 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46MMkc2nvpz4Nf9; Mon, 2 Sep 2019 07:52:40 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 442D4EF3B; Mon, 2 Sep 2019 07:52:40 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x827qeWm061595; Mon, 2 Sep 2019 07:52:40 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x827qeJL061594; Mon, 2 Sep 2019 07:52:40 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201909020752.x827qeJL061594@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Mon, 2 Sep 2019 07:52:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r351684 - user/pho/stress2/misc X-SVN-Group: user X-SVN-Commit-Author: pho X-SVN-Commit-Paths: user/pho/stress2/misc X-SVN-Commit-Revision: 351684 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Sep 2019 07:52:40 -0000 Author: pho Date: Mon Sep 2 07:52:39 2019 New Revision: 351684 URL: https://svnweb.freebsd.org/changeset/base/351684 Log: Added "Fixed by". Pointed out problem with an uninitialized "flags" variable. Style fixes. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/sctp.sh Modified: user/pho/stress2/misc/sctp.sh ============================================================================== --- user/pho/stress2/misc/sctp.sh Mon Sep 2 02:51:51 2019 (r351683) +++ user/pho/stress2/misc/sctp.sh Mon Sep 2 07:52:39 2019 (r351684) @@ -5,6 +5,7 @@ # "panic: general protection fault" seen: # https://people.freebsd.org/~pho/stress/log/sctp.txt +# Fixed by r350626 # $FreeBSD$ @@ -25,91 +26,92 @@ static int my_port_num; static void die(const char *s) { - perror(s); - exit(1); + perror(s); + exit(1); } -static void + static void server(void) { - struct sctp_sndrcvinfo sndrcvinfo; - struct sockaddr_in servaddr = { - .sin_family = AF_INET, - .sin_addr.s_addr = htonl(INADDR_ANY), - .sin_port = htons(my_port_num), - }; - struct sctp_initmsg initmsg = { - .sinit_num_ostreams = 5, - .sinit_max_instreams = 5, - .sinit_max_attempts = 4, - }; - int listen_fd, conn_fd, flags, ret, in; + struct sctp_sndrcvinfo sndrcvinfo; + struct sockaddr_in servaddr = { + .sin_family = AF_INET, + .sin_addr.s_addr = htonl(INADDR_ANY), + .sin_port = htons(my_port_num), + }; + struct sctp_initmsg initmsg = { + .sinit_num_ostreams = 5, + .sinit_max_instreams = 5, + .sinit_max_attempts = 4, + }; + int listen_fd, conn_fd, flags, ret, in; - listen_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP); - if (listen_fd < 0) - die("socket"); + listen_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP); + if (listen_fd < 0) + die("socket"); - ret = bind(listen_fd, (struct sockaddr *) &servaddr, sizeof(servaddr)); - if (ret < 0) - die("bind"); + ret = bind(listen_fd, (struct sockaddr *) &servaddr, sizeof(servaddr)); + if (ret < 0) + die("bind"); - ret = setsockopt(listen_fd, IPPROTO_SCTP, SCTP_INITMSG, &initmsg, - sizeof(initmsg)); - if (ret < 0) - die("setsockopt"); + ret = setsockopt(listen_fd, IPPROTO_SCTP, SCTP_INITMSG, &initmsg, + sizeof(initmsg)); + if (ret < 0) + die("setsockopt"); - ret = listen(listen_fd, initmsg.sinit_max_instreams); - if (ret < 0) - die("listen"); + ret = listen(listen_fd, initmsg.sinit_max_instreams); + if (ret < 0) + die("listen"); - for (;;) { - char buffer[1024]; + for (;;) { + char buffer[1024]; - printf("Waiting for connection\n"); - fflush(stdout); + printf("Waiting for connection\n"); + fflush(stdout); - conn_fd = accept(listen_fd, (struct sockaddr *) NULL, NULL); - if(conn_fd < 0) - die("accept()"); + conn_fd = accept(listen_fd, (struct sockaddr *) NULL, NULL); + if(conn_fd < 0) + die("accept()"); - printf("New client connected\n"); - fflush(stdout); + printf("New client connected\n"); + fflush(stdout); - in = sctp_recvmsg(conn_fd, buffer, sizeof(buffer), NULL, 0, - &sndrcvinfo, &flags); - if (in > 0) { - printf("Received data: %s\n", buffer); - fflush(stdout); - } + /* Note that flags is uninitialized here */ + in = sctp_recvmsg(conn_fd, buffer, sizeof(buffer), NULL, 0, + &sndrcvinfo, &flags); + if (in > 0) { + printf("Received data: %s\n", buffer); + fflush(stdout); + } - close(conn_fd); - } + close(conn_fd); + } } static void client(void) { - struct sockaddr_in servaddr = { - .sin_family = AF_INET, - .sin_port = htons(my_port_num), - .sin_addr.s_addr = inet_addr("127.0.0.1"), - }; - int conn_fd, ret; - const char *msg = "Hello, Server!"; + struct sockaddr_in servaddr = { + .sin_family = AF_INET, + .sin_port = htons(my_port_num), + .sin_addr.s_addr = inet_addr("127.0.0.1"), + }; + int conn_fd, ret; + const char *msg = "Hello, Server!"; - conn_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP); - if (conn_fd < 0) - die("socket()"); + conn_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP); + if (conn_fd < 0) + die("socket()"); - ret = connect(conn_fd, (struct sockaddr *) &servaddr, sizeof(servaddr)); - if (ret < 0) - die("connect()"); + ret = connect(conn_fd, (struct sockaddr *) &servaddr, sizeof(servaddr)); + if (ret < 0) + die("connect()"); - ret = sctp_sendmsg(conn_fd, (void *) msg, strlen(msg) + 1, NULL, 0, 0, 0, 0, 0, 0 ); - if (ret < 0) - die("sctp_sendmsg"); + ret = sctp_sendmsg(conn_fd, (void *) msg, strlen(msg) + 1, NULL, 0, 0, 0, 0, 0, 0 ); + if (ret < 0) + die("sctp_sendmsg"); - close(conn_fd); + close(conn_fd); } int @@ -117,12 +119,12 @@ main(int argc __unused, char *argv[]) { my_port_num = atoi(argv[1]); - if (strstr(basename(argv[0]), "server")) - server(); - else - client(); + if (strstr(basename(argv[0]), "server")) + server(); + else + client(); - return 0; + return (0); } EOF @@ -153,5 +155,5 @@ pkill server wait while pkill swap; do :; done wait -rm -f /tmp/server /tmp/client +rm -f /tmp/sctp.c /tmp/server /tmp/client exit 0