[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 02/13] cxenstored: add support for systemd active sockets
On Thu, 2014-06-12 at 18:18 -0700, Luis R. Rodriguez wrote: > +int xs_validate_active_socket(const char *connect_to) > +{ > + char sock[30]; > + > + /* We have to null terminate the socket path */ > + memset(sock, '\0', sizeof(sock)); > + memcpy(sock, connect_to, strlen(connect_to)); This risks overrunning sock if connect_to is longer than 30 characters. But your use of strlen suggests that connect_to is already NULL terminated, so what is this for? > + if ((strncmp("/var/run/xenstored/socket_ro", sock, 28) != 0) && > + (strncmp("/var/run/xenstored/socket", sock, 25) != 0)) { Given that sock (or connect_to) is NULL terminated, why strncmp and not the straightforward strcmp? As it is I think your code would accept e.g. /var/run/xenstored/socketwibble, no? Is it common in systemd support to validate the input socket's path in this way? As opposed to trusting that the systemd unit file is correct. > +static void xen_claim_active_sockets(int **psock, int **pro_sock) > +{ > + int *sock, *ro_sock; > + const char *soc_str = xs_daemon_socket(); > + const char *soc_str_ro = xs_daemon_socket_ro(); > + int n; > + > + n = sd_listen_fds(0); > + if (n <= 0) { > + sd_notifyf(0, "STATUS=Failed to get any active sockets: %s\n" > + "ERRNO=%i", > + strerror(errno), > + errno); > + barf_perror("sd_listen_fds() failed\n"); > + } else if (n > 2) { > + fprintf(stderr, SD_ERR "Expected 2 fds but given %d\n", n); > + sd_notifyf(0, "STATUS=Mismatch on number (2): %s\n" > + "ERRNO=%d", > + strerror(EBADR), > + EBADR); > + barf_perror("sd_listen_fds() gave too many fds\n"); Need this be fatal? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |