Catch the library crashes patched in the previous commit. --- tests/Makefile.am | 5 +++ tests/errors-connect-null.c | 88 +++++++++++++++++++++++++++++++++++++ .gitignore | 1 + 3 files changed, 94 insertions(+) create mode 100644 tests/errors-connect-null.c
diff --git a/tests/Makefile.am b/tests/Makefile.am index 7fc7dec3..f6a2c110 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -168,6 +168,7 @@ check_PROGRAMS += \ errors-not-connected \ errors-name-too-long \ errors-poll-no-fd \ + errors-connect-null \ errors-connect-twice \ errors-not-negotiating \ errors-notify-not-blocked \ @@ -233,6 +234,7 @@ TESTS += \ errors-not-connected \ errors-name-too-long \ errors-poll-no-fd \ + errors-connect-null \ errors-connect-twice \ errors-not-negotiating \ errors-notify-not-blocked \ @@ -309,6 +311,9 @@ errors_name_too_long_LDADD = $(top_builddir)/lib/libnbd.la errors_poll_no_fd_SOURCES = errors-poll-no-fd.c errors_poll_no_fd_LDADD = $(top_builddir)/lib/libnbd.la +errors_connect_null_SOURCES = errors-connect-null.c +errors_connect_null_LDADD = $(top_builddir)/lib/libnbd.la + errors_connect_twice_SOURCES = errors-connect-twice.c errors_connect_twice_LDADD = $(top_builddir)/lib/libnbd.la diff --git a/tests/errors-connect-null.c b/tests/errors-connect-null.c new file mode 100644 index 00000000..9cda242e --- /dev/null +++ b/tests/errors-connect-null.c @@ -0,0 +1,88 @@ +/* NBD client library in userspace + * Copyright (C) 2013-2022 Red Hat Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* Deliberately provoke some errors and check the error messages from + * nbd_get_error etc look reasonable. + */ + +#include <config.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> + +#include <libnbd.h> + +static char *progname; + +static void +check (int experr, const char *prefix) +{ + const char *msg = nbd_get_error (); + int errnum = nbd_get_errno (); + + fprintf (stderr, "error: \"%s\"\n", msg); + fprintf (stderr, "errno: %d (%s)\n", errnum, strerror (errnum)); + if (strncmp (msg, prefix, strlen (prefix)) != 0) { + fprintf (stderr, "%s: test failed: missing context prefix: %s\n", + progname, msg); + exit (EXIT_FAILURE); + } + if (errnum != experr) { + fprintf (stderr, "%s: test failed: " + "expected errno = %d (%s), but got %d\n", + progname, experr, strerror (experr), errnum); + exit (EXIT_FAILURE); + } +} + +int +main (int argc, char *argv[]) +{ + struct nbd_handle *nbd; + const char *cmd[] = { NULL }; + + progname = argv[0]; + + nbd = nbd_create (); + if (nbd == NULL) { + fprintf (stderr, "%s\n", nbd_get_error ()); + exit (EXIT_FAILURE); + } + + /* Connect to an invalid command. */ + if (nbd_connect_command (nbd, NULL) != -1) { + fprintf (stderr, "%s: test failed: " + "nbd_connect_command did not reject NULL argv\n", + argv[0]); + exit (EXIT_FAILURE); + } + check (EFAULT, "nbd_connect_command: "); + + if (nbd_connect_command (nbd, (char **) cmd) != -1) { + fprintf (stderr, "%s: test failed: " + "nbd_connect_command did not reject empty argv\n", + argv[0]); + exit (EXIT_FAILURE); + } + check (EINVAL, "nbd_connect_command: "); + + nbd_close (nbd); + exit (EXIT_SUCCESS); +} diff --git a/.gitignore b/.gitignore index 071393fb..bc49860d 100644 --- a/.gitignore +++ b/.gitignore @@ -204,6 +204,7 @@ Makefile.in /tests/errors-client-unaligned /tests/errors-client-unknown-flags /tests/errors-client-zerosize +/tests/errors-connect-null /tests/errors-connect-twice /tests/errors-enum /tests/errors-multiple-disconnects -- 2.37.3 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs