From 8e418d55baf5cca99ed4f0bbd26cd9ab15ea7902 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Mon, 23 Sep 1996 17:16:33 +0000 Subject: (diskfs_S_file_get_fs_options): Free ARGZ if diskfs_append_args returns an error. Initialize ARGZ & ARGZ_LEN to the program name, and call diskfs_append_args instead of diskfs_get_options. : New include. --- libdiskfs/file-get-fs-opts.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'libdiskfs/file-get-fs-opts.c') diff --git a/libdiskfs/file-get-fs-opts.c b/libdiskfs/file-get-fs-opts.c index 662e7511..24f2f461 100644 --- a/libdiskfs/file-get-fs-opts.c +++ b/libdiskfs/file-get-fs-opts.c @@ -22,6 +22,7 @@ #include #include +#include #include "priv.h" error_t @@ -29,19 +30,25 @@ diskfs_S_file_get_fs_options (struct protid *cred, char **data, unsigned *data_len) { error_t err; - char *argz; - size_t argz_len; + char *argz = 0; + size_t argz_len = 0; if (! cred) return EOPNOTSUPP; + err = argz_add (&argz, &argz_len, program_invocation_name); + if (err) + return err; + rwlock_reader_lock (&diskfs_fsys_lock); - err = diskfs_get_options (&argz, &argz_len); + err = diskfs_append_args (&argz, &argz_len); rwlock_reader_unlock (&diskfs_fsys_lock); if (! err) /* Move ARGZ from a malloced buffer into a vm_alloced one. */ err = fshelp_return_malloced_buffer (argz, argz_len, data, data_len); + else + free (argz); return err; } -- cgit v1.2.3