From 5706608b3787935b0bcb115bb8fd899005e4ce65 Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Thu, 1 Nov 2018 19:54:30 -0700 Subject: fixes #766 NNG asserts when setting socket name Reported by @TBastiani (with suggested fix). Test validation added. --- tests/sock.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'tests/sock.c') diff --git a/tests/sock.c b/tests/sock.c index 4aef1f38..562a05d7 100644 --- a/tests/sock.c +++ b/tests/sock.c @@ -122,6 +122,27 @@ TestMain("Socket Operations", { nng_strfree(allocd); }); + Convey("Oversize sockname handled right", { + char name[256]; // 64 is max + size_t sz = sizeof(name); + memset(name, 'A', sz); + So(nng_setopt(s1, NNG_OPT_SOCKNAME, name, + sz) == NNG_EINVAL); + name[sz - 1] = '\0'; + So(nng_setopt(s1, NNG_OPT_SOCKNAME, name, + sz) == NNG_EINVAL); + + strcpy(name, "hello"); + So(nng_setopt( + s1, NNG_OPT_SOCKNAME, name, sz) == 0); + sz = sizeof(name); + memset(name, 'B', sz); + So(nng_getopt( + s1, NNG_OPT_SOCKNAME, name, &sz) == 0); + So(sz == 6); + So(strcmp(name, "hello") == 0); + }); + Convey("RAW option works", { bool raw; So(nng_getopt_bool(s1, NNG_OPT_RAW, &raw) == -- cgit v1.2.3-70-g09d2