}
srv_addr.sun_family = AF_UNIX;
- strncpy(srv_addr.sun_path, socket_path, sizeof(srv_addr.sun_path));
- srv_addr.sun_path[sizeof(srv_addr.sun_path) - 1] = '\0';
+ assert(strlen(socket_path) < sizeof(srv_addr.sun_path));
+ xstrncpy(srv_addr.sun_path, socket_path, sizeof(srv_addr.sun_path));
if (connect(s, (const struct sockaddr *) &srv_addr,
sizeof(struct sockaddr_un)) < 0) {
* Create the address we will be binding to.
*/
my_addr.sun_family = AF_UNIX;
- strncpy(my_addr.sun_path, socket_path, sizeof(my_addr.sun_path));
- my_addr.sun_path[sizeof(my_addr.sun_path) - 1] = '\0';
+ assert(strlen(socket_path) < sizeof(my_addr.sun_path));
+ xstrncpy(my_addr.sun_path, socket_path, sizeof(my_addr.sun_path));
unlink(socket_path);
save_umask = umask(0);
if (bind(s, (const struct sockaddr *) &my_addr,
}
}
+ if (strlen(socket_path) >= sizeof(((struct sockaddr_un *)0)->sun_path)) {
+ errx(EXIT_FAILURE, _("socket name too long: %s"), socket_path);
+ }
+
if (!no_pid && !pidfile_path)
pidfile_path = UUIDD_PIDFILE_PATH;
OUTPUT_FILE="$(mktemp "${TS_OUTDIR}/uuiddXXXXXXXXXXXXX")"
UUIDD_PID="$(mktemp -u "${TS_OUTDIR}/uuiddXXXXXXXXXXXXX")"
-UUIDD_SOCKET="$(mktemp -u "${TS_OUTDIR}/uuiddXXXXXXXXXXXXX")"
+# socket path must be short (SIZEOF_SOCKADDR_UN_SUN_PATH 108)
+UUIDD_SOCKET=$(mktemp "/tmp/ultest-$TS_COMPONENT-$TS_TESTNAME-socketXXXXXX")
$TS_CMD_UUIDD -p "$UUIDD_PID" -s "$UUIDD_SOCKET"
if [ $? -ne 0 ]; then