diff options
Diffstat (limited to 'rbutil/mkamsboot')
-rw-r--r-- | rbutil/mkamsboot/dualboot/bin2c.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/rbutil/mkamsboot/dualboot/bin2c.c b/rbutil/mkamsboot/dualboot/bin2c.c index 830224c35a..b02af88a4d 100644 --- a/rbutil/mkamsboot/dualboot/bin2c.c +++ b/rbutil/mkamsboot/dualboot/bin2c.c | |||
@@ -97,6 +97,7 @@ int main (int argc, char* argv[]) | |||
97 | for(i=0; i < argc - 2; i++) { | 97 | for(i=0; i < argc - 2; i++) { |
98 | unsigned char* buf; | 98 | unsigned char* buf; |
99 | off_t len; | 99 | off_t len; |
100 | off_t orig_len; | ||
100 | char *ext; | 101 | char *ext; |
101 | char *array = argv[2+i]; | 102 | char *array = argv[2+i]; |
102 | 103 | ||
@@ -108,14 +109,20 @@ int main (int argc, char* argv[]) | |||
108 | return 4; | 109 | return 4; |
109 | } | 110 | } |
110 | 111 | ||
111 | len = filesize(fd); | 112 | orig_len = filesize(fd); |
113 | /* pad to 32bit */ | ||
114 | len = (orig_len + 3) & ~3; | ||
112 | 115 | ||
113 | buf = malloc(len); | 116 | buf = malloc(len); |
114 | if (read(fd,buf,len) < len) { | 117 | if (read(fd,buf,orig_len) < orig_len) { |
115 | fprintf(stderr,"Short read, aborting\n"); | 118 | fprintf(stderr,"Short read, aborting\n"); |
116 | return 5; | 119 | return 5; |
117 | } | 120 | } |
118 | 121 | ||
122 | /* pad to 32bit with zeros */ | ||
123 | if (len > orig_len) | ||
124 | memset(buf+orig_len, 0, len-orig_len); | ||
125 | |||
119 | /* remove file extension */ | 126 | /* remove file extension */ |
120 | ext = strchr (array, '.'); | 127 | ext = strchr (array, '.'); |
121 | if (ext != NULL) | 128 | if (ext != NULL) |