OSDN Git Service

Make add_extra_args_file() work properly.
authorPeter Jones <pjones@redhat.com>
Fri, 6 Sep 2013 15:31:03 +0000 (11:31 -0400)
committerPeter Jones <pjones@redhat.com>
Mon, 13 Jan 2014 21:29:15 +0000 (16:29 -0500)
Two things:
1) make it actually return the data
2) _ascii() and _unicode() will get invoked in some cases, and they need
   to handle the case where they do nothing.

Signed-off-by: Peter Jones <pjones@redhat.com>
src/lib/efi.c

index c423b64..926e190 100644 (file)
@@ -727,6 +727,9 @@ append_extra_args_ascii(uint8_t **data, size_t *data_size)
                        p[usedchars] = '\0';
        }
 
+       if (!new_data)
+               return 0;
+
        if (*data)
                free(*data);
        *data = (uint8_t *)new_data;
@@ -765,6 +768,9 @@ append_extra_args_unicode(uint8_t **data, size_t *data_size)
                                / sizeof (*new_data);
        }
 
+       if (!new_data)
+               return 0;
+
        if (*data)
                free(*data);
        *data = (uint8_t *)new_data;
@@ -780,7 +786,7 @@ append_extra_args_file(uint8_t **data, size_t *data_size)
        int fd = STDIN_FILENO;
        ssize_t num_read=0;
        unsigned long appended=0;
-       size_t maxchars = 1024;
+       size_t maxchars = 0;
        char *buffer; 
 
        if (!data) {
@@ -819,6 +825,9 @@ append_extra_args_file(uint8_t **data, size_t *data_size)
        if (fd != STDIN_FILENO)
                close(fd);
 
+       *data = (uint8_t *)buffer;
+       *data_size = appended;
+
        return appended;
 }