X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fguestfsd.c;h=38cfd1a1873a4fb90adec805b98916ede9d9eb37;hb=eb7ec6170eca278fb910e18ca1f7ca81c6b507c0;hp=51bb0b7341fa680b3200c53a27d2c3044b52dfef;hpb=73be6db9bf1c0ae96262a5f4fa9328bb4e648637;p=libguestfs.git diff --git a/daemon/guestfsd.c b/daemon/guestfsd.c index 51bb0b7..38cfd1a 100644 --- a/daemon/guestfsd.c +++ b/daemon/guestfsd.c @@ -13,7 +13,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #include @@ -239,6 +239,11 @@ main (int argc, char *argv[]) _umask (0); #endif + /* Make a private copy of /etc/lvm so we can change the config (see + * daemon/lvm-filter.c). + */ + copy_lvm (); + /* Connect to virtio-serial channel. */ int sock = open (VIRTIO_SERIAL_CHANNEL, O_RDWR | O_CLOEXEC); if (sock == -1) { @@ -410,10 +415,9 @@ xread (int sock, void *v_buf, size_t len) } int -add_string (char ***argv, int *size, int *alloc, const char *str) +add_string_nodup (char ***argv, int *size, int *alloc, char *str) { char **new_argv; - char *new_str; if (*size >= *alloc) { *alloc += 64; @@ -421,25 +425,36 @@ add_string (char ***argv, int *size, int *alloc, const char *str) if (new_argv == NULL) { reply_with_perror ("realloc"); free_strings (*argv); + *argv = NULL; return -1; } *argv = new_argv; } + (*argv)[*size] = str; + + (*size)++; + return 0; +} + +int +add_string (char ***argv, int *size, int *alloc, const char *str) +{ + char *new_str; + if (str) { new_str = strdup (str); if (new_str == NULL) { reply_with_perror ("strdup"); free_strings (*argv); + *argv = NULL; return -1; } - } else + } else { new_str = NULL; + } - (*argv)[*size] = new_str; - - (*size)++; - return 0; + return add_string_nodup (argv, size, alloc, new_str); } size_t