From 40251a7ed7195e4846f7dd25ebe78816507be0fd Mon Sep 17 00:00:00 2001 From: Sunmin Lee Date: Mon, 25 Sep 2017 10:45:37 +0900 Subject: [PATCH] Apply Tizen coding rule Change-Id: I2e9193da5f9000a67f2039440e82fa45d3597d18 Signed-off-by: Sunmin Lee --- fota_gui/fota_gr_direct.c | 53 ++-- fota_gui/fota_gr_direct_wc1.c | 69 ++--- fota_gui/fota_gui_log.h | 22 +- fota_gui/fota_gui_main.c | 9 +- fota_gui/fota_gui_test.c | 5 +- fota_gui/fota_gui_util.c | 6 +- fota_gui/fota_log.h | 22 +- fota_gui/fota_png.c | 9 +- fota_gui/tdm-if.c | 229 +++++++------- sign_verify/verify_delta.c | 696 +++++++++++++++++++++--------------------- src/rpi3/ua.c | 345 ++++++++++----------- src/rpi3/ua.h | 6 +- src/tw1/ua.c | 313 +++++++++---------- src/tw1/ua.h | 8 +- 14 files changed, 841 insertions(+), 951 deletions(-) diff --git a/fota_gui/fota_gr_direct.c b/fota_gui/fota_gr_direct.c index 7759840..70ebd56 100755 --- a/fota_gui/fota_gr_direct.c +++ b/fota_gui/fota_gr_direct.c @@ -26,8 +26,6 @@ #include "fota_png.h" #include "tdm-if.h" - - #define COLOR_RED 0xFF0000 #define COLOR_GREEN 0xFF00 @@ -70,7 +68,7 @@ FbInfo s_fbi_local; /*----------------------------------------------------------------------------- _gr_direct_fill_rect ----------------------------------------------------------------------------*/ -static void _gr_direct_fill_rect(FbInfo *fbi, s32 x, s32 y, s32 w, s32 h, u32 color ) +static void _gr_direct_fill_rect(FbInfo *fbi, s32 x, s32 y, s32 w, s32 h, u32 color) { unsigned int *fb_buf_int = NULL; unsigned int *fb_buf_cur = NULL; @@ -89,9 +87,8 @@ static void _gr_direct_fill_rect(FbInfo *fbi, s32 x, s32 y, s32 w, s32 h, u32 co fb_buf_int += y * fbi->w + x; fb_buf_cur = fb_buf_int; - while (dx--) { + while (dx--) *fb_buf_cur++ = color; - } fb_buf_cur -= w; fb_buf_cur += fbi->w; @@ -106,7 +103,7 @@ static void _gr_direct_fill_rect(FbInfo *fbi, s32 x, s32 y, s32 w, s32 h, u32 co /*----------------------------------------------------------------------------- _gr_direct_clear_screen ----------------------------------------------------------------------------*/ -static void _gr_direct_clear_screen(FbInfo *fbi, u32 color ) +static void _gr_direct_clear_screen(FbInfo *fbi, u32 color) { unsigned int *fb_buf_int = NULL; unsigned int *fb_buf_cur = NULL; @@ -124,9 +121,8 @@ static void _gr_direct_clear_screen(FbInfo *fbi, u32 color ) fb_buf_int = (unsigned int *)fbi->buf; fb_buf_cur = fb_buf_int; - while (dx--) { + while (dx--) *fb_buf_cur++ = color; - } dy--; while (dy--) { @@ -145,10 +141,10 @@ static void _gr_direct_draw_text(FbInfo *fbi, int x1, int y1, char* str, int len char ch; char img_name[256]; - for (i=0; i= '0') && (ch <= '9')) { - sprintf(img_name, "%s%s%c.png", IMG_BASE, NUM_IMG_PREFIX,ch); + sprintf(img_name, "%s%s%c.png", IMG_BASE, NUM_IMG_PREFIX, ch); w = 20; } else if (ch == '%') { sprintf(img_name, "%s%s", IMG_BASE, PERCENT_IMG_NAME); @@ -157,9 +153,8 @@ static void _gr_direct_draw_text(FbInfo *fbi, int x1, int y1, char* str, int len continue; } - if (read_png_file(img_name) < 0) { + if (read_png_file(img_name) < 0) continue; - } draw_png_img_xy(fbi, x1, y1); release_png_res(); @@ -175,13 +170,11 @@ static void _gr_direct_draw_prog_text(FbInfo *fbi, int percent) { char str_percent[256]; - if (percent <= 0) { + if (percent <= 0) percent = 0; - } - if (percent > 100) { + if (percent > 100) percent = 100; - } sprintf(str_percent, "%d%%", percent); _gr_direct_fill_rect(fbi, 320, 751, 200, 32, COLOR_BLACK); @@ -199,17 +192,14 @@ static void _gr_direct_draw_prog_img(FbInfo *fbi, int percent) int shaft_max; int shaft; - if (read_png_file(IMG_BASE PROGRESS1_IMG_NAME) < 0) { + if (read_png_file(IMG_BASE PROGRESS1_IMG_NAME) < 0) return; - } - if (percent <= 0) { + if (percent <= 0) return; - } - if (percent > 100) { + if (percent > 100) percent = 100; - } /* left part */ img_x = 36; @@ -218,18 +208,16 @@ static void _gr_direct_draw_prog_img(FbInfo *fbi, int percent) /* middle part */ #if 0 - for (x=36+17; x<=648+17; x+=2) { + for (x = 36+17; x <= 648+17; x += 2) draw_png_img_clip_xy(fbi, x, img_y, 17, 0, 2, 27); - } #endif /* drawing range calculation : 0(1%), max(100%)*/ shaft_max = 648 - 17 - 17; shaft = shaft_max * (percent - 1) / 99; - for (x=36+17; x<(36+17+shaft); x+=2) { + for (x = 36+17; x < (36+17+shaft); x += 2) draw_png_img_clip_xy(fbi, x, img_y, 17, 0, 2, 27); - } /* right part */ img_x = 36+17+shaft; @@ -249,9 +237,8 @@ static void _gr_direct_draw_prog_bg_img(FbInfo *fbi) int img_y = 0; int x; - if (read_png_file(IMG_BASE PROGRESS2_IMG_NAME) < 0) { + if (read_png_file(IMG_BASE PROGRESS2_IMG_NAME) < 0) return; - } img_x = 36; img_y = 696; @@ -261,9 +248,8 @@ static void _gr_direct_draw_prog_bg_img(FbInfo *fbi) img_y = 696; draw_png_img_xy(fbi, img_x, img_y); - for (x=36+17; x<=648+17; x+=2) { + for (x = 36+17; x <= 648+17; x += 2) draw_png_img_clip_xy(fbi, x, img_y, 17, 0, 2, 27); - } release_png_res(); } @@ -276,9 +262,8 @@ static void _gr_direct_draw_main_img(FbInfo *fbi) int img_x = 0; int img_y = 0; - if (read_png_file(IMG_BASE MAIN_IMG_NAME) < 0) { + if (read_png_file(IMG_BASE MAIN_IMG_NAME) < 0) return; - } img_x = (fbi->w - 456)/2; img_y = 212; @@ -339,9 +324,8 @@ int fota_gr_direct_init(void) { unsigned char *buf = NULL; - if (tdm_if_display_init() < 0) { + if (tdm_if_display_init() < 0) return -1; - } tdm_if_lcd_off(); @@ -377,4 +361,3 @@ void fota_gr_direct_deinit(void) } tdm_if_display_deinit(); } - diff --git a/fota_gui/fota_gr_direct_wc1.c b/fota_gui/fota_gr_direct_wc1.c index 011e3e2..9164bcb 100755 --- a/fota_gui/fota_gr_direct_wc1.c +++ b/fota_gui/fota_gr_direct_wc1.c @@ -68,7 +68,7 @@ int s_saved_percent = -1; /*----------------------------------------------------------------------------- _gr_direct_fill_rect ----------------------------------------------------------------------------*/ -static void _gr_direct_fill_rect(FbInfo *fbi, s32 x, s32 y, s32 w, s32 h, u32 color ) +static void _gr_direct_fill_rect(FbInfo *fbi, s32 x, s32 y, s32 w, s32 h, u32 color) { unsigned int *fb_buf_int = NULL; unsigned int *fb_buf_cur = NULL; @@ -87,9 +87,8 @@ static void _gr_direct_fill_rect(FbInfo *fbi, s32 x, s32 y, s32 w, s32 h, u32 co fb_buf_int += y * fbi->w + x; fb_buf_cur = fb_buf_int; - while (dx--) { + while (dx--) *fb_buf_cur++ = color; - } fb_buf_cur -= w; fb_buf_cur += fbi->w; @@ -104,7 +103,7 @@ static void _gr_direct_fill_rect(FbInfo *fbi, s32 x, s32 y, s32 w, s32 h, u32 co /*----------------------------------------------------------------------------- _gr_direct_clear_screen ----------------------------------------------------------------------------*/ -static void _gr_direct_clear_screen(FbInfo *fbi, u32 color ) +static void _gr_direct_clear_screen(FbInfo *fbi, u32 color) { unsigned int *fb_buf_int = NULL; unsigned int *fb_buf_cur = NULL; @@ -122,9 +121,8 @@ static void _gr_direct_clear_screen(FbInfo *fbi, u32 color ) fb_buf_int = (unsigned int *)fbi->buf; fb_buf_cur = fb_buf_int; - while (dx--) { + while (dx--) *fb_buf_cur++ = color; - } dy--; while (dy--) { @@ -146,19 +144,17 @@ static void _gr_direct_draw_text(FbInfo *fbi, int percent) img_x = 110; img_y = 240; - if (percent < 10) { + if (percent < 10) img_x += 10; - } else if (percent < 100) { + else if (percent < 100) img_x += 20; - } else if (percent == 100) { + else if (percent == 100) img_x += 30; - } if (percent == 100) { snprintf(img_name, MAX_PATH, "%s%s%d.png", IMG_BASE, PROGRESS_NUM_PREFIX, 1); - if (read_png_file(img_name) < 0) { + if (read_png_file(img_name) < 0) return; - } draw_png_img_xy(fbi, img_x, img_y); release_png_res(); @@ -171,9 +167,8 @@ static void _gr_direct_draw_text(FbInfo *fbi, int percent) num = 0; snprintf(img_name, MAX_PATH, "%s%s%d.png", IMG_BASE, PROGRESS_NUM_PREFIX, num); - if (read_png_file(img_name) < 0) { + if (read_png_file(img_name) < 0) return; - } draw_png_img_xy(fbi, img_x, img_y); release_png_res(); @@ -183,9 +178,8 @@ static void _gr_direct_draw_text(FbInfo *fbi, int percent) num = percent % 10; snprintf(img_name, MAX_PATH, "%s%s%d.png", IMG_BASE, PROGRESS_NUM_PREFIX, num); - if (read_png_file(img_name) < 0) { + if (read_png_file(img_name) < 0) return; - } draw_png_img_xy(fbi, img_x, img_y); release_png_res(); @@ -193,9 +187,8 @@ static void _gr_direct_draw_text(FbInfo *fbi, int percent) img_x += 17; snprintf(img_name, MAX_PATH, "%s%s", IMG_BASE, PERCENT_IMG_NAME); - if (read_png_file(img_name) < 0) { + if (read_png_file(img_name) < 0) return; - } draw_png_img_xy(fbi, img_x, img_y); release_png_res(); @@ -206,13 +199,11 @@ static void _gr_direct_draw_text(FbInfo *fbi, int percent) ----------------------------------------------------------------------------*/ static void _gr_direct_draw_prog_text(FbInfo *fbi, int percent) { - if (percent <= 0) { + if (percent <= 0) percent = 0; - } - if (percent > 100) { + if (percent > 100) percent = 100; - } _gr_direct_fill_rect(fbi, 110, 240, 100, 41, COLOR_BLACK); _gr_direct_draw_text(fbi, percent); @@ -223,9 +214,8 @@ static void _gr_direct_draw_main_prog_img(FbInfo *fbi, int percent) int img_x = 0; int img_y = 0; - if (read_png_file(IMG_BASE MAIN_PG_IMG_NAME) < 0) { + if (read_png_file(IMG_BASE MAIN_PG_IMG_NAME) < 0) return; - } img_x = 0; img_y = 0; @@ -242,9 +232,8 @@ static void _gr_direct_draw_main_img(FbInfo *fbi) int img_x = 0; int img_y = 0; - if (read_png_file(IMG_BASE MAIN_IMG_NAME) < 0) { + if (read_png_file(IMG_BASE MAIN_IMG_NAME) < 0) return; - } img_x = 0; img_y = 0; @@ -278,9 +267,8 @@ static void _gr_direct_draw_last_buffer_text_img(FbInfo *fbi) int img_x = 0; int img_y = 0; - if (read_png_file("/system/opt/usr/data/fota/FotaBgImage2.png") < 0) { + if (read_png_file("/system/opt/usr/data/fota/FotaBgImage2.png") < 0) return; - } img_x = 0; img_y = 0; @@ -295,9 +283,8 @@ static void _gr_direct_draw_popup_img(FbInfo *fbi) int img_x = 0; int img_y = 0; - if (read_png_file(IMG_BASE POPUP_IMG_NAME) < 0) { + if (read_png_file(IMG_BASE POPUP_IMG_NAME) < 0) return; - } img_x = 0; img_y = 0; @@ -347,9 +334,8 @@ static void _gr_direct_circular_progress(FbInfo *fbi) // delete previous progress image if (prev_prog_cnt >= 0) { snprintf(img_name, MAX_PATH, "%s%s%02d.png", IMG_BASE, PROGRESS_IMG_PREFIX, prev_prog_cnt+1); - if (read_png_file(img_name) < 0) { + if (read_png_file(img_name) < 0) return; - } draw_png_mask_xy(fbi, 0, 0, 0, 0, 0); release_png_res(); @@ -357,9 +343,8 @@ static void _gr_direct_circular_progress(FbInfo *fbi) // draw current progress image snprintf(img_name, MAX_PATH, "%s%s%02d.png", IMG_BASE, PROGRESS_IMG_PREFIX, prog_cnt+1); - if (read_png_file(img_name) < 0) { + if (read_png_file(img_name) < 0) return; - } draw_png_img_xy(fbi, 0, 0); release_png_res(); @@ -369,9 +354,8 @@ static void _gr_direct_circular_progress(FbInfo *fbi) prev_prog_cnt = prog_cnt; prog_cnt++; - if (prog_cnt >= 30) { + if (prog_cnt >= 30) prog_cnt = 0; - } } static void _gr_direct_circle_progress_bar(FbInfo *fbi, int progress) @@ -380,23 +364,19 @@ static void _gr_direct_circle_progress_bar(FbInfo *fbi, int progress) static int prog_pre = 0; int count = 0; - int prog_cnt = 0; - if (progress <= 0) { + if (progress <= 0) progress = 0; - } - if (progress > 100) { + if (progress > 100) progress = 100; - } prog_cnt = (int)(progress * 32 / 100); LOG("prog_pre/prog_cnt : %d, %d \n", prog_pre , prog_cnt); - for (; prog_pre <= prog_cnt; prog_pre++) - { + for (; prog_pre <= prog_cnt; prog_pre++) { LOG("prog_pre/prog_cnt : %d, %d \n", prog_pre , prog_cnt); // draw current progress image @@ -506,9 +486,8 @@ int fota_gr_direct_init(void) { unsigned char *buf = NULL; - if (tdm_if_display_init() < 0) { + if (tdm_if_display_init() < 0) return -1; - } #if !defined(FOTA_GUI_EMBEDDED) tdm_if_lcd_off(); diff --git a/fota_gui/fota_gui_log.h b/fota_gui/fota_gui_log.h index 5060e7e..734b52e 100755 --- a/fota_gui/fota_gui_log.h +++ b/fota_gui/fota_gui_log.h @@ -50,27 +50,27 @@ extern FILE *__log_out_file__; #ifdef DEBUG_STDOUT #define LOGE(s, args...) printf(LOG_PRFIX "/ERROR(%s) " s, __func__, ##args) // Error log -#define LOGL(mask, s, args...) do{if((mask) & __log_level__) \ - printf(LOG_PRFIX "/(%s): " s,__func__, ##args);}while(0) +#define LOGL(mask, s, args...) do { if ((mask) & __log_level__) \ + printf(LOG_PRFIX "/(%s): " s, __func__, ##args); } while (0) #define LOG(s, args...) LOGL(LOG_DEBUG, s, ##args) #elif defined(DEBUG_FILE) #define LOGE(s, args...) fprintf(__log_out_file__, LOG_PRFIX "/ERROR(%s) " s, __func__, ##args) -#define LOGL(mask, s, args...) do{if((mask) & __log_level__) \ - fprintf(__log_out_file__, LOG_PRFIX "/(%s): " s ,__func__, ##args);}while(0) +#define LOGL(mask, s, args...) do { if ((mask) & __log_level__) \ + fprintf(__log_out_file__, LOG_PRFIX "/(%s): " s , __func__, ##args); } while (0) #define LOG(s, args...) LOGL(LOG_DEBUG, s, ##args) #elif defined(DEBUG_STDOUT_FILE) // debug printf #define LOGE(s, args...) do {\ printf(LOG_PRFIX "/ERROR(%s) " s, __func__, ##args);\ fprintf(__log_out_file__, LOG_PRFIX "/ERROR(%s) " s, __func__, ##args);\ - }while(0) -#define LOGL(mask, s, args...) do{ \ - if((mask) & __log_level__){\ - printf(LOG_PRFIX "/(%s): " s ,__func__, ##args);\ - fprintf(__log_out_file__, LOG_PRFIX "/(%s): " s,__func__, ##args);\ - }\ - }while(0) + } while (0) +#define LOGL(mask, s, args...) do { \ + if ((mask) & __log_level__) { \ + printf(LOG_PRFIX "/(%s): " s , __func__, ##args);\ + fprintf(__log_out_file__, LOG_PRFIX "/(%s): " s, __func__, ##args);\ + } \ + } while (0) #define LOG(s, args...) LOGL(LOG_DEBUG, s, ##args) #else diff --git a/fota_gui/fota_gui_main.c b/fota_gui/fota_gui_main.c index 4997254..fea7fea 100755 --- a/fota_gui/fota_gui_main.c +++ b/fota_gui/fota_gui_main.c @@ -48,12 +48,12 @@ typedef struct { char cmd_name[64]; int argc; char argv[3][64]; -}sock_cmd; +} sock_cmd; typedef struct { int ack; char ack_desc[256]; -}sock_ack; +} sock_ack; #define CMD_SUCCESS 0 #define CMD_ERROR -1 @@ -177,7 +177,7 @@ int main(int argc, char **argv) return -1; } - while(1) { + while (1) { clen = sizeof(caddr); connfd = accept(sockfd, (struct sockaddr *)&caddr, &clen); if (connfd < 0) { @@ -192,9 +192,8 @@ int main(int argc, char **argv) cnt = 0; cnt = recv(connfd, recvbuff, sizeof(sock_cmd), 0); if (cnt <= 0) { - if (cnt < 0) { + if (cnt < 0) perror("recv!"); - } done = 1; } diff --git a/fota_gui/fota_gui_test.c b/fota_gui/fota_gui_test.c index bdf226c..dafe870 100755 --- a/fota_gui/fota_gui_test.c +++ b/fota_gui/fota_gui_test.c @@ -184,11 +184,10 @@ int main(int argc, char **argv) } percent = atoi(argv[1]); - if (percent == -1) { + if (percent == -1) ret = sock_cmd_end(); - } else { + else ret = sock_cmd_progress(percent); - } LOG("ret = %d\n", ret); sock_deinit(); diff --git a/fota_gui/fota_gui_util.c b/fota_gui/fota_gui_util.c index 80b6815..3459d93 100755 --- a/fota_gui/fota_gui_util.c +++ b/fota_gui/fota_gui_util.c @@ -67,13 +67,13 @@ void _init_stdio(void) ----------------------------------------------------------------------------*/ void _exit_stdio(void) { - if (s_fd_stdin >=0) + if (s_fd_stdin >= 0) close(s_fd_stdin); - if (s_fd_stdout >=0) + if (s_fd_stdout >= 0) close(s_fd_stdout); - if (s_fd_stderr >=0) + if (s_fd_stderr >= 0) close(s_fd_stderr); } diff --git a/fota_gui/fota_log.h b/fota_gui/fota_log.h index a267c84..c4b303f 100755 --- a/fota_gui/fota_log.h +++ b/fota_gui/fota_log.h @@ -43,27 +43,27 @@ extern FILE *__log_out_file__; #ifdef DEBUG_STDOUT #define LOGE(s, args...) printf(LOG_PRFIX "/ERROR(%s) " s, __func__, ##args) // Error log -#define LOGL(mask, s, args...) do{if((mask) & __log_level__) \ - printf(LOG_PRFIX "/(%s): " s,__func__, ##args);}while(0) +#define LOGL(mask, s, args...) do { if ((mask) & __log_level__) \ + printf(LOG_PRFIX "/(%s): " s, __func__, ##args); } while (0) #define LOG(s, args...) LOGL(LOG_DEBUG, s, ##args) #elif defined(DEBUG_FILE) #define LOGE(s, args...) fprintf(__log_out_file__, LOG_PRFIX "/ERROR(%s) " s, __func__, ##args) -#define LOGL(mask, s, args...) do{if((mask) & __log_level__) \ - fprintf(__log_out_file__, LOG_PRFIX "/(%s): " s ,__func__, ##args);}while(0) +#define LOGL(mask, s, args...) do { if ((mask) & __log_level__) \ + fprintf(__log_out_file__, LOG_PRFIX "/(%s): " s , __func__, ##args); } while (0) #define LOG(s, args...) LOGL(LOG_DEBUG, s, ##args) #elif defined(DEBUG_STDOUT_FILE) // debug printf #define LOGE(s, args...) do {\ printf(LOG_PRFIX "/ERROR(%s) " s, __func__, ##args);\ fprintf(__log_out_file__, LOG_PRFIX "/ERROR(%s) " s, __func__, ##args);\ - }while(0) -#define LOGL(mask, s, args...) do{ \ - if((mask) & __log_level__){\ - printf(LOG_PRFIX "/(%s): " s ,__func__, ##args);\ - fprintf(__log_out_file__, LOG_PRFIX "/(%s): " s,__func__, ##args);\ - }\ - }while(0) + } while (0) +#define LOGL(mask, s, args...) do {\ + if ((mask) & __log_level__) {\ + printf(LOG_PRFIX "/(%s): " s , __func__, ##args);\ + fprintf(__log_out_file__, LOG_PRFIX "/(%s): " s, __func__, ##args);\ + } \ + } while (0) #define LOG(s, args...) LOGL(LOG_DEBUG, s, ##args) #else diff --git a/fota_gui/fota_png.c b/fota_gui/fota_png.c index a31a70f..dddbf80 100755 --- a/fota_gui/fota_png.c +++ b/fota_gui/fota_png.c @@ -53,9 +53,9 @@ int read_png_file(char *file_name) } rn = fread(header, 1, 8, fp); - if (rn != 8) { + if (rn != 8) LOG("fread() read num mismatch\n"); - } + if (png_sig_cmp((png_bytep)header, 0, 8)) { fclose(fp); LOG("[read_png_file] File %s is not recognized" @@ -157,11 +157,10 @@ void draw_png_img_clip_xy(FbInfo *fbi, int x1, int y1, int cx, int cy, int cw, i fb_buf_cur += x1; for (y = 0; y < ch; y++) { png_byte *row = (png_byte *) row_pointers[cy + y]; - if (bit_depth == 8) { + if (bit_depth == 8) row += (bpp * cx); - } else if (bit_depth == 16) { + else if (bit_depth == 16) row += (bpp * 2 * cx); - } for (x = 0; x < cw; x++) { if (bpp == 3) { if (bit_depth == 8) { diff --git a/fota_gui/tdm-if.c b/fota_gui/tdm-if.c index fde0701..e5491a5 100755 --- a/fota_gui/tdm-if.c +++ b/fota_gui/tdm-if.c @@ -7,7 +7,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -40,12 +40,12 @@ tdm_if_disp s_st_disp; static void tdm_if_display_commit_handler_cb(tdm_output *output, unsigned int sequence, - unsigned int tv_sec, unsigned int tv_usec, - void *user_data) + unsigned int tv_sec, unsigned int tv_usec, + void *user_data) { - LOGD("commit_handle_cb!!\n"); + LOGD("commit_handle_cb!!\n"); - return ; + return ; } int tdm_if_display_init(void) @@ -59,97 +59,88 @@ int tdm_if_display_init(void) tdm_output_type output_type = TDM_OUTPUT_TYPE_Unknown; tdm_output_conn_status conn_status = TDM_OUTPUT_CONN_STATUS_DISCONNECTED; const tdm_output_mode *output_mode; - int output_count=0; + int output_count = 0; tdm_info_layer layer_info; tbm_surface_info_s surf_info; - int i=0; + int i = 0; LOGD("start"); st_disp->disp = tdm_display_init(&err); - if (!st_disp->disp){ - LOGD("failed to init tdm_display. error num = %d\n", err); - goto exit; + if (!st_disp->disp) { + LOGD("failed to init tdm_display. error num = %d\n", err); + goto exit; } err = tdm_display_get_fd(st_disp->disp, &st_disp->tdm_fd); - if (err != TDM_ERROR_NONE) - { - LOGD("failed to get tdm fd. error num = %d\n", err); - goto exit; + if (err != TDM_ERROR_NONE) { + LOGD("failed to get tdm fd. error num = %d\n", err); + goto exit; } st_disp->drm_fd = tdm_helper_get_fd("TDM_DRM_MASTER_FD"); - if (st_disp->drm_fd == -1 ) - { - LOGD("failed to get tdm fd. error num = %d\n", err); - goto exit; + if (st_disp->drm_fd == -1) { + LOGD("failed to get tdm fd. error num = %d\n", err); + goto exit; } err = tdm_display_get_output_count(st_disp->disp, &output_count); - if (err != TDM_ERROR_NONE) - { - LOGD("failed to get output count. error num = %d\n", err); - goto exit; + if (err != TDM_ERROR_NONE) { + LOGD("failed to get output count. error num = %d\n", err); + goto exit; } - for(i=0; idisp, i, &err); - if (err != TDM_ERROR_NONE) - { - LOGD("failed to get outout. error num = %d\n", err); - goto exit; - } - - err = tdm_output_get_output_type(output, &output_type); - if (err != TDM_ERROR_NONE) - { - LOGD("failed to get output type. error num = %d\n", err); - goto exit; - } - - err = tdm_output_get_conn_status(output, &conn_status); - if (err != TDM_ERROR_NONE) - { - LOGD("failed to get output connection status. error num = %d\n", err); - goto exit; - } - - LOGD("output_type=%d conn_status=%d\n", output_type, conn_status); - if ((output_type == TDM_OUTPUT_TYPE_LVDS) || (output_type == TDM_OUTPUT_TYPE_DSI)) - { - int cnt=0; - err = tdm_output_get_available_modes(output, &output_mode, &cnt); - if (err != TDM_ERROR_NONE) - { - LOGD("failed to get output available modes. error num = %d\n", err); - goto exit; - } - - /* GET MODE INFO */ - st_disp->output = output; - st_disp->width = output_mode->hdisplay; - st_disp->height = output_mode->vdisplay; - - unsigned int width_mm = 0; - unsigned int height_mm = 0; - err = tdm_output_get_physical_size(output, &width_mm, &height_mm); - LOGD("TDM_OUTPUT_MODE:name[%s] mode:wh[%d %d] mm[%d %d]", - output_mode->name, st_disp->width, st_disp->height, width_mm, height_mm); - - break; - } + for (i = 0; i < output_count; i++) { + output = tdm_display_get_output(st_disp->disp, i, &err); + if (err != TDM_ERROR_NONE) { + LOGD("failed to get outout. error num = %d\n", err); + goto exit; + } + + err = tdm_output_get_output_type(output, &output_type); + if (err != TDM_ERROR_NONE) { + LOGD("failed to get output type. error num = %d\n", err); + goto exit; + } + + err = tdm_output_get_conn_status(output, &conn_status); + if (err != TDM_ERROR_NONE) { + LOGD("failed to get output connection status. error num = %d\n", err); + goto exit; + } + + LOGD("output_type=%d conn_status=%d\n", output_type, conn_status); + if ((output_type == TDM_OUTPUT_TYPE_LVDS) || (output_type == TDM_OUTPUT_TYPE_DSI)) { + int cnt = 0; + err = tdm_output_get_available_modes(output, &output_mode, &cnt); + if (err != TDM_ERROR_NONE) { + LOGD("failed to get output available modes. error num = %d\n", err); + goto exit; + } + + /* GET MODE INFO */ + st_disp->output = output; + st_disp->width = output_mode->hdisplay; + st_disp->height = output_mode->vdisplay; + + unsigned int width_mm = 0; + unsigned int height_mm = 0; + err = tdm_output_get_physical_size(output, &width_mm, &height_mm); + LOGD("TDM_OUTPUT_MODE:name[%s] mode:wh[%d %d] mm[%d %d]", + output_mode->name, st_disp->width, st_disp->height, width_mm, height_mm); + + break; + } } /* MEMORY ALLOCATION */ st_disp->bufmgr = tbm_bufmgr_init(st_disp->drm_fd); - if (!st_disp->bufmgr){ - LOGD("failed to tbm_bufmgr_init\n"); - goto exit; + if (!st_disp->bufmgr) { + LOGD("failed to tbm_bufmgr_init\n"); + goto exit; } st_disp->buffer_size = st_disp->width * st_disp->height * RGB32_PITCH; @@ -166,42 +157,40 @@ int tdm_if_display_init(void) surf_info.planes[0].stride = st_disp->stride; for (buf_cnt = 0; buf_cnt < MAX_BUF; buf_cnt++) { - st_disp->bo[buf_cnt] = tbm_bo_alloc(st_disp->bufmgr, st_disp->buffer_size, TBM_BO_SCANOUT ); - if (!st_disp->bo[buf_cnt]){ - LOGD("failed to tbm_bo_alloc\n"); - goto exit; - } + st_disp->bo[buf_cnt] = tbm_bo_alloc(st_disp->bufmgr, st_disp->buffer_size, TBM_BO_SCANOUT); + if (!st_disp->bo[buf_cnt]) { + LOGD("failed to tbm_bo_alloc\n"); + goto exit; + } - st_disp->bo_handle[buf_cnt] = tbm_bo_map(st_disp->bo[buf_cnt], TBM_DEVICE_CPU, TBM_OPTION_WRITE); - st_disp->buffer[buf_cnt] = st_disp->bo_handle[buf_cnt].ptr; - st_disp->handle[buf_cnt] = tbm_bo_get_handle(st_disp->bo[buf_cnt], TBM_DEVICE_2D).u32; + st_disp->bo_handle[buf_cnt] = tbm_bo_map(st_disp->bo[buf_cnt], TBM_DEVICE_CPU, TBM_OPTION_WRITE); + st_disp->buffer[buf_cnt] = st_disp->bo_handle[buf_cnt].ptr; + st_disp->handle[buf_cnt] = tbm_bo_get_handle(st_disp->bo[buf_cnt], TBM_DEVICE_2D).u32; - memset(st_disp->buffer[buf_cnt], color, st_disp->stride * st_disp->height); + memset(st_disp->buffer[buf_cnt], color, st_disp->stride * st_disp->height); - tbm_bo_unmap(st_disp->bo[buf_cnt]); + tbm_bo_unmap(st_disp->bo[buf_cnt]); - st_disp->surf[buf_cnt] = tbm_surface_internal_create_with_bos(&surf_info, &st_disp->bo[buf_cnt], 1); - if (!st_disp->surf[buf_cnt]){ - LOGD("failed to create tbm_surface!!\n"); - goto exit; - } + st_disp->surf[buf_cnt] = tbm_surface_internal_create_with_bos(&surf_info, &st_disp->bo[buf_cnt], 1); + if (!st_disp->surf[buf_cnt]) { + LOGD("failed to create tbm_surface!!\n"); + goto exit; + } } /* SET LAYER */ tdm_layer_capability layer_caps; tdm_layer *tmp_layer = NULL; - for(i=0; ioutput, output_count, &err); - tdm_layer_get_capabilities(tmp_layer, &layer_caps); - if (layer_caps & TDM_LAYER_CAPABILITY_PRIMARY) - break; + for (i = 0; i < output_count; i++) { + tmp_layer = tdm_output_get_layer(st_disp->output, output_count, &err); + tdm_layer_get_capabilities(tmp_layer, &layer_caps); + if (layer_caps & TDM_LAYER_CAPABILITY_PRIMARY) + break; } - if (!tmp_layer) - { - LOGD("failed to get output layer. error num = %d\n", err); - goto exit; + if (!tmp_layer) { + LOGD("failed to get output layer. error num = %d\n", err); + goto exit; } st_disp->layer = tmp_layer; @@ -220,10 +209,9 @@ int tdm_if_display_init(void) layer_info.transform = TDM_TRANSFORM_NORMAL; err = tdm_layer_set_info(st_disp->layer, &layer_info); - if (err != TDM_ERROR_NONE) - { - LOGD("failed to get output layer. error num = %d\n", err); - goto exit; + if (err != TDM_ERROR_NONE) { + LOGD("failed to get output layer. error num = %d\n", err); + goto exit; } st_disp->current_buf_id = 0; @@ -240,23 +228,22 @@ void tdm_if_display_deinit(void) int buf_cnt = 0; tdm_if_disp *st_disp = &s_st_disp; - if (st_disp->disp != NULL) - { - /* RELEASE RESOURCE */ - for (buf_cnt = 0; buf_cnt < MAX_BUF; buf_cnt++) { - if (st_disp->surf[buf_cnt] != NULL) - tbm_surface_destroy(st_disp->surf[buf_cnt]); + if (st_disp->disp != NULL) { + /* RELEASE RESOURCE */ + for (buf_cnt = 0; buf_cnt < MAX_BUF; buf_cnt++) { + if (st_disp->surf[buf_cnt] != NULL) + tbm_surface_destroy(st_disp->surf[buf_cnt]); - if (st_disp->bo[buf_cnt] != NULL) - tbm_bo_unref(st_disp->bo[buf_cnt]); - } + if (st_disp->bo[buf_cnt] != NULL) + tbm_bo_unref(st_disp->bo[buf_cnt]); + } - if (st_disp->bufmgr != NULL) - tbm_bufmgr_deinit(st_disp->bufmgr); - st_disp->bufmgr = NULL; + if (st_disp->bufmgr != NULL) + tbm_bufmgr_deinit(st_disp->bufmgr); + st_disp->bufmgr = NULL; - tdm_display_deinit(st_disp->disp); - st_disp->disp = NULL; + tdm_display_deinit(st_disp->disp); + st_disp->disp = NULL; } } @@ -307,10 +294,10 @@ void tdm_if_lcd_on(void) tdm_if_disp *st_disp = &s_st_disp; /* SET DPMS ON */ - LOGD("DPMS ON!\n"); - tdm_output_set_dpms(st_disp->output, TDM_OUTPUT_DPMS_ON); + LOGD("DPMS ON!\n"); + tdm_output_set_dpms(st_disp->output, TDM_OUTPUT_DPMS_ON); - return ; + return ; } void tdm_if_lcd_off(void) @@ -318,8 +305,8 @@ void tdm_if_lcd_off(void) tdm_if_disp *st_disp = &s_st_disp; /* SET DPMS OFF */ - LOGD("DPMS OFF!\n"); - tdm_output_set_dpms(st_disp->output, TDM_OUTPUT_DPMS_OFF); + LOGD("DPMS OFF!\n"); + tdm_output_set_dpms(st_disp->output, TDM_OUTPUT_DPMS_OFF); - return ; + return ; } diff --git a/sign_verify/verify_delta.c b/sign_verify/verify_delta.c index e800b77..c7e01c8 100755 --- a/sign_verify/verify_delta.c +++ b/sign_verify/verify_delta.c @@ -7,7 +7,7 @@ * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -64,391 +64,389 @@ int main(int argc, char **argv) static void get_ts1(timestamp *ts) { - gettimeofday((struct timeval *) ts, NULL); + gettimeofday((struct timeval *) ts, NULL); } static long e_ts2(timestamp *start, timestamp *end) { - return (end->tv_sec - start->tv_sec) * 1000 + (end->tv_usec - - start->tv_usec) / 1000; + return (end->tv_sec - start->tv_sec) * 1000 + (end->tv_usec + - start->tv_usec) / 1000; } static X509 *load_cert_mem(const unsigned char *cert_data, const int cert_len) { - _INNER_FUNC_ENTER; - X509 *cert = 0; - BIO *cert_bio = 0; - - if (!(cert_bio = BIO_new_mem_buf( - (unsigned char *)cert_data, cert_len))) { - _DEBUG_ERROR("BIO mem error"); - goto end; - } - cert = d2i_X509_bio(cert_bio, NULL); + _INNER_FUNC_ENTER; + X509 *cert = 0; + BIO *cert_bio = 0; + + if (!(cert_bio = BIO_new_mem_buf( + (unsigned char *)cert_data, cert_len))) { + _DEBUG_ERROR("BIO mem error"); + goto end; + } + cert = d2i_X509_bio(cert_bio, NULL); end: - if (cert_bio) - BIO_free(cert_bio); + if (cert_bio) + BIO_free(cert_bio); - _INNER_FUNC_EXIT; - return cert; + _INNER_FUNC_EXIT; + return cert; } static int check(X509_STORE *ctx, X509 *cert) { - _INNER_FUNC_ENTER; - int ret = -140; - X509_STORE_CTX *csc = 0; - - csc = X509_STORE_CTX_new(); - if (csc == NULL) { - _DEBUG_ERROR("X509 csc is null"); - goto end; - } - - ret = -141; - X509_STORE_set_flags(ctx, 0); - if(!X509_STORE_CTX_init(csc, ctx, cert, 0)) { - _DEBUG_ERROR("X509 store ctx init failed"); - goto end; - } - - if (X509_verify_cert(csc) != 1) { - _DEBUG_ERROR("err: %s", X509_verify_cert_error_string(csc->error)); - //fprintf(stderr,"MDFPP_E: %s\n", X509_verify_cert_error_string(csc->error)); - ret = -142; - goto end; - } - - ret = 0; + _INNER_FUNC_ENTER; + int ret = -140; + X509_STORE_CTX *csc = 0; + + csc = X509_STORE_CTX_new(); + if (csc == NULL) { + _DEBUG_ERROR("X509 csc is null"); + goto end; + } + + ret = -141; + X509_STORE_set_flags(ctx, 0); + if (!X509_STORE_CTX_init(csc, ctx, cert, 0)) { + _DEBUG_ERROR("X509 store ctx init failed"); + goto end; + } + + if (X509_verify_cert(csc) != 1) { + _DEBUG_ERROR("err: %s", X509_verify_cert_error_string(csc->error)); + //fprintf(stderr,"MDFPP_E: %s\n", X509_verify_cert_error_string(csc->error)); + ret = -142; + goto end; + } + + ret = 0; end: - if (csc) - X509_STORE_CTX_free(csc); + if (csc) + X509_STORE_CTX_free(csc); - _INNER_FUNC_EXIT; - return ret; + _INNER_FUNC_EXIT; + return ret; } static X509 *verify_certificate(const unsigned char *certdata, unsigned int certlength, - const char* CAfile, int *result) + const char* CAfile, int *result) { - _INNER_FUNC_ENTER; - int ret = -130; - X509_STORE *cert_ctx=NULL; - X509_LOOKUP *lookup=NULL; - X509 *cert = 0; - - cert_ctx = X509_STORE_new(); - if (cert_ctx == NULL) { - _DEBUG_ERROR("cert_ctx is NULL"); - goto end; - } - - OpenSSL_add_all_algorithms(); - - ret = -131; - lookup=X509_STORE_add_lookup(cert_ctx,X509_LOOKUP_file()); - if (lookup == NULL) { - _DEBUG_ERROR("X509 lookup is NULL"); - goto end; - } - - ret = -132; - if(!X509_LOOKUP_load_file(lookup, CAfile, X509_FILETYPE_ASN1)) { - _DEBUG_ERROR("X509 load file failed"); - goto end; - } - - ret = -133; - lookup=X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_hash_dir()); - if (lookup == NULL) { - _DEBUG_ERROR("X509 add lookup failed"); - goto end; - } - - X509_LOOKUP_add_dir(lookup, NULL, X509_FILETYPE_DEFAULT); - - ret = -134; - cert = load_cert_mem(certdata, certlength); - if (cert == NULL) { - _DEBUG_ERROR("cannot load cert from mem"); - goto end; - } - - ret = check(cert_ctx, cert); + _INNER_FUNC_ENTER; + int ret = -130; + X509_STORE *cert_ctx = NULL; + X509_LOOKUP *lookup = NULL; + X509 *cert = 0; + + cert_ctx = X509_STORE_new(); + if (cert_ctx == NULL) { + _DEBUG_ERROR("cert_ctx is NULL"); + goto end; + } + + OpenSSL_add_all_algorithms(); + + ret = -131; + lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_file()); + if (lookup == NULL) { + _DEBUG_ERROR("X509 lookup is NULL"); + goto end; + } + + ret = -132; + if (!X509_LOOKUP_load_file(lookup, CAfile, X509_FILETYPE_ASN1)) { + _DEBUG_ERROR("X509 load file failed"); + goto end; + } + + ret = -133; + lookup = X509_STORE_add_lookup(cert_ctx, X509_LOOKUP_hash_dir()); + if (lookup == NULL) { + _DEBUG_ERROR("X509 add lookup failed"); + goto end; + } + + X509_LOOKUP_add_dir(lookup, NULL, X509_FILETYPE_DEFAULT); + + ret = -134; + cert = load_cert_mem(certdata, certlength); + if (cert == NULL) { + _DEBUG_ERROR("cannot load cert from mem"); + goto end; + } + + ret = check(cert_ctx, cert); end: - if (cert_ctx) - X509_STORE_free(cert_ctx); + if (cert_ctx) + X509_STORE_free(cert_ctx); - *result = ret; - _INNER_FUNC_EXIT; - return cert; + *result = ret; + _INNER_FUNC_EXIT; + return cert; } typedef struct fota_sign_info { - unsigned char SECSIG[4]; - - //uint16_t x509size; - unsigned int x509size; - - unsigned char crypt; - unsigned char hash; - unsigned char padding; - unsigned char salt; - unsigned char size; - unsigned char reserved[5]; - unsigned char *sig; - unsigned int sig_size; + unsigned char SECSIG[4]; + + //uint16_t x509size; + unsigned int x509size; + + unsigned char crypt; + unsigned char hash; + unsigned char padding; + unsigned char salt; + unsigned char size; + unsigned char reserved[5]; + unsigned char *sig; + unsigned int sig_size; } FOTA_SIGN_INFO; static int verify_signature(int fd, size_t length, EVP_PKEY *pkey, - unsigned char *sig, int siglen, const EVP_MD *md) + unsigned char *sig, int siglen, const EVP_MD *md) { - _INNER_FUNC_ENTER; - unsigned char buffer[32*1024]; - EVP_MD_CTX *md_ctx; - EVP_PKEY_CTX *ctx; - size_t readreq = 32*1024; - size_t readbytes = readreq; - unsigned char md_value[64] = {0}; - int md_size = 0; - size_t totalbytes = 0; - - // Init hash - md_ctx = EVP_MD_CTX_create(); - EVP_DigestInit_ex(md_ctx, md, NULL); - - // Calc hash - lseek(fd, 0, SEEK_SET); - while (totalbytes < length) { - if (totalbytes + readreq >= length) - readreq = length - totalbytes; - readbytes = read(fd, buffer, readreq); - - if(EVP_DigestUpdate(md_ctx, buffer, readbytes) != 1) { // Prevent 47917 - adding the return value check. - _INNER_FUNC_EXIT; - return -101; - } - totalbytes += readbytes; - } - EVP_DigestFinal(md_ctx, md_value, (unsigned int *)&md_size); - - EVP_MD_CTX_destroy(md_ctx); - - // Init signature algorithm - ctx = EVP_PKEY_CTX_new(pkey, NULL); - if (!ctx) { - _INNER_FUNC_EXIT; - return -101; - } - if (EVP_PKEY_verify_init(ctx) <= 0) { - _INNER_FUNC_EXIT; - return -102; - } - if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) { - _INNER_FUNC_EXIT; - return -103; - } - if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -2) <= 0) { - _INNER_FUNC_EXIT; - return -104; - } - if (EVP_PKEY_CTX_set_signature_md(ctx, md) <= 0) { - _INNER_FUNC_EXIT; - return -105; - } - - // ret == 1 indicates success, 0 verify failure and < 0 for some other error. - if (EVP_PKEY_verify(ctx, sig, siglen, md_value, md_size) != 1) { -// SLOGE("Signature verification failed\n"); - _INNER_FUNC_EXIT; - return -106; - } - - // success - _INNER_FUNC_EXIT; - return 0; + _INNER_FUNC_ENTER; + unsigned char buffer[32*1024]; + EVP_MD_CTX *md_ctx; + EVP_PKEY_CTX *ctx; + size_t readreq = 32*1024; + size_t readbytes = readreq; + unsigned char md_value[64] = {0}; + int md_size = 0; + size_t totalbytes = 0; + + // Init hash + md_ctx = EVP_MD_CTX_create(); + EVP_DigestInit_ex(md_ctx, md, NULL); + + // Calc hash + lseek(fd, 0, SEEK_SET); + while (totalbytes < length) { + if (totalbytes + readreq >= length) + readreq = length - totalbytes; + readbytes = read(fd, buffer, readreq); + + if (EVP_DigestUpdate(md_ctx, buffer, readbytes) != 1) { // Prevent 47917 - adding the return value check. + _INNER_FUNC_EXIT; + return -101; + } + totalbytes += readbytes; + } + EVP_DigestFinal(md_ctx, md_value, (unsigned int *)&md_size); + + EVP_MD_CTX_destroy(md_ctx); + + // Init signature algorithm + ctx = EVP_PKEY_CTX_new(pkey, NULL); + if (!ctx) { + _INNER_FUNC_EXIT; + return -101; + } + if (EVP_PKEY_verify_init(ctx) <= 0) { + _INNER_FUNC_EXIT; + return -102; + } + if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_PSS_PADDING) <= 0) { + _INNER_FUNC_EXIT; + return -103; + } + if (EVP_PKEY_CTX_set_rsa_pss_saltlen(ctx, -2) <= 0) { + _INNER_FUNC_EXIT; + return -104; + } + if (EVP_PKEY_CTX_set_signature_md(ctx, md) <= 0) { + _INNER_FUNC_EXIT; + return -105; + } + + // ret == 1 indicates success, 0 verify failure and < 0 for some other error. + if (EVP_PKEY_verify(ctx, sig, siglen, md_value, md_size) != 1) { +// SLOGE("Signature verification failed\n"); + _INNER_FUNC_EXIT; + return -106; + } + + // success + _INNER_FUNC_EXIT; + return 0; } int verify_FOTA_image(const char *cacert_path, const char *path) { - _INNER_FUNC_ENTER; - int ret = -110; - X509 *cert = 0; - EVP_PKEY *pkey; - int fd = 0; - int rd = 0; - int length = 0; - off_t offset = 0; - unsigned char buffer[4096]; - int cmtsize = 0; - int old_sigsize = 0; - unsigned char *x509 = 0; - FOTA_SIGN_INFO fota_sign_info; - const EVP_MD *md; - timestamp s, e; - - if (!cacert_path || !path) { - _INNER_FUNC_EXIT; - return -111; - } - if (strlen(cacert_path) > 64) { - _INNER_FUNC_EXIT; - return -112; - } - if (strlen(path) > 64) { - _INNER_FUNC_EXIT; - return -113; - } - - /* - * Prepare OpenSSL - */ - OpenSSL_add_all_digests(); - - pkey = EVP_PKEY_new(); - - /* - * Load Certificate - */ - fd = open(path, O_RDONLY, 0644); - if (fd < 0) { - _DEBUG_WARNING("Warning: Failed to open %s : %s", - path, strerror(errno)); - _INNER_FUNC_EXIT; - return -114; - } - - /* - * Goto Footer - */ - if( (length = lseek(fd, 0, SEEK_END)) == -1){ - _DEBUG_ERROR("lseek error is %d", errno); - ret = -115; - goto end; - } - - if( lseek(fd, length - 6, SEEK_SET) == -1){ - _DEBUG_ERROR("lseek error is %d", errno); - ret = -116; - goto end; - } - - if ((rd = read(fd, buffer, 6)) != 6) { - ret = -117; - goto end; - } - // check footer constant - if (buffer[2] != 0xff || buffer[3] != 0xff) { - ret = -118; - goto end; - } - // calc comment size and start offset of sig - old_sigsize = (buffer[1] << 8) + buffer[0]; - cmtsize = (buffer[5] << 8) + buffer[4]; - - /* - * Goto Zip Comments - */ - // original string comments 'signed by SignApk" : 18 bytes - // FOTA sig header : 16 bytes - // FOTA sig : 256 bytes - // Certificate : variable (1~2k) - // original signature: variable - if( lseek(fd, length - cmtsize, SEEK_SET) == -1){ - _DEBUG_ERROR("lseek error is %d", errno); - ret = -119; - goto end; - } - - if( (cmtsize-old_sigsize) < 0 || (unsigned int)(cmtsize-old_sigsize) > sizeof(buffer)){ - ret = -119; - goto end; - } - - if ((rd = read(fd, buffer, cmtsize-old_sigsize)) != (int)(cmtsize-old_sigsize)) { - _DEBUG_ERROR("invalid comments size = %d", rd); - ret = -120; - goto end; - } - - // Goto FOTA signature - // check FOTA signature header - offset = strlen("signed by SignApk") + 1; - // copy header - memcpy((void *)&fota_sign_info, buffer+offset, 16); - - // assign buffer - fota_sign_info.sig = buffer+offset+16; - - if (fota_sign_info.SECSIG[0] != 0x53 || - fota_sign_info.SECSIG[1] != 0x45 || - fota_sign_info.SECSIG[2] != 0x43 || - fota_sign_info.SECSIG[3] != 0x53) { - _DEBUG_WARNING("invalid FOTA signature"); - ret = -121; - goto end; - } - // get signature size - switch (fota_sign_info.size) { - default: - fota_sign_info.sig_size = 256; - break; - } - // get x509 buffer - x509 = buffer + offset + 16 + fota_sign_info.sig_size; - - /* - * Verify Certificate - */ - get_ts1(&s); - cert = verify_certificate(x509, fota_sign_info.x509size, - cacert_path, &ret); - get_ts1(&e); - if (!cert || ret) { - _DEBUG_ERROR("verify_certificate failed with %d", ret); - ret = -122; - goto end; - } - - _DEBUG_INFO("Certificate verified OK (%ldms)", e_ts2(&s, &e)); - //_DEBUG_INFO("Certificate verified OK", e_ts2(&s, &e)); - - /* - * Signature verification - */ - get_ts1(&s); - switch (fota_sign_info.hash) { - default: - - md = EVP_get_digestbyname("SHA512"); - break; - } - pkey = X509_get_pubkey(cert); - if ( (length - cmtsize - 2) < 0) { // Fixed for prevent. CID:48010 - _DEBUG_ERROR("length is wrong!!"); - ret = -123; - goto end; - } - ret = verify_signature(fd, (size_t)(length - cmtsize - 2)/*size of comment length field*/, - pkey, fota_sign_info.sig, fota_sign_info.sig_size, md); - get_ts1(&e); - if(ret != 0) { - _DEBUG_ERROR("Signature verified NOK(%d) (%ldms)", ret, e_ts2(&s, &e)); - } else { - _DEBUG_INFO("Signature verified OK (%ldms)", e_ts2(&s, &e)); - } + _INNER_FUNC_ENTER; + int ret = -110; + X509 *cert = 0; + EVP_PKEY *pkey; + int fd = 0; + int rd = 0; + int length = 0; + off_t offset = 0; + unsigned char buffer[4096]; + int cmtsize = 0; + int old_sigsize = 0; + unsigned char *x509 = 0; + FOTA_SIGN_INFO fota_sign_info; + const EVP_MD *md; + timestamp s, e; + + if (!cacert_path || !path) { + _INNER_FUNC_EXIT; + return -111; + } + if (strlen(cacert_path) > 64) { + _INNER_FUNC_EXIT; + return -112; + } + if (strlen(path) > 64) { + _INNER_FUNC_EXIT; + return -113; + } + + /* + * Prepare OpenSSL + */ + OpenSSL_add_all_digests(); + + pkey = EVP_PKEY_new(); + + /* + * Load Certificate + */ + fd = open(path, O_RDONLY, 0644); + if (fd < 0) { + _DEBUG_WARNING("Warning: Failed to open %s : %s", + path, strerror(errno)); + _INNER_FUNC_EXIT; + return -114; + } + + /* + * Goto Footer + */ + if ((length = lseek(fd, 0, SEEK_END)) == -1) { + _DEBUG_ERROR("lseek error is %d", errno); + ret = -115; + goto end; + } + + if (lseek(fd, length - 6, SEEK_SET) == -1) { + _DEBUG_ERROR("lseek error is %d", errno); + ret = -116; + goto end; + } + + if ((rd = read(fd, buffer, 6)) != 6) { + ret = -117; + goto end; + } + // check footer constant + if (buffer[2] != 0xff || buffer[3] != 0xff) { + ret = -118; + goto end; + } + // calc comment size and start offset of sig + old_sigsize = (buffer[1] << 8) + buffer[0]; + cmtsize = (buffer[5] << 8) + buffer[4]; + + /* + * Goto Zip Comments + */ + // original string comments 'signed by SignApk" : 18 bytes + // FOTA sig header : 16 bytes + // FOTA sig : 256 bytes + // Certificate : variable (1~2k) + // original signature: variable + if (lseek(fd, length - cmtsize, SEEK_SET) == -1) { + _DEBUG_ERROR("lseek error is %d", errno); + ret = -119; + goto end; + } + + if ((cmtsize-old_sigsize) < 0 || (unsigned int)(cmtsize-old_sigsize) > sizeof(buffer)) { + ret = -119; + goto end; + } + + if ((rd = read(fd, buffer, cmtsize-old_sigsize)) != (int)(cmtsize-old_sigsize)) { + _DEBUG_ERROR("invalid comments size = %d", rd); + ret = -120; + goto end; + } + + // Goto FOTA signature + // check FOTA signature header + offset = strlen("signed by SignApk") + 1; + // copy header + memcpy((void *)&fota_sign_info, buffer+offset, 16); + + // assign buffer + fota_sign_info.sig = buffer+offset+16; + + if (fota_sign_info.SECSIG[0] != 0x53 || + fota_sign_info.SECSIG[1] != 0x45 || + fota_sign_info.SECSIG[2] != 0x43 || + fota_sign_info.SECSIG[3] != 0x53) { + _DEBUG_WARNING("invalid FOTA signature"); + ret = -121; + goto end; + } + // get signature size + switch (fota_sign_info.size) { + default: + fota_sign_info.sig_size = 256; + break; + } + // get x509 buffer + x509 = buffer + offset + 16 + fota_sign_info.sig_size; + + /* + * Verify Certificate + */ + get_ts1(&s); + cert = verify_certificate(x509, fota_sign_info.x509size, + cacert_path, &ret); + get_ts1(&e); + if (!cert || ret) { + _DEBUG_ERROR("verify_certificate failed with %d", ret); + ret = -122; + goto end; + } + + _DEBUG_INFO("Certificate verified OK (%ldms)", e_ts2(&s, &e)); + //_DEBUG_INFO("Certificate verified OK", e_ts2(&s, &e)); + + /* + * Signature verification + */ + get_ts1(&s); + switch (fota_sign_info.hash) { + default: + md = EVP_get_digestbyname("SHA512"); + break; + } + pkey = X509_get_pubkey(cert); + if ((length - cmtsize - 2) < 0) { // Fixed for prevent. CID:48010 + _DEBUG_ERROR("length is wrong!!"); + ret = -123; + goto end; + } + ret = verify_signature(fd, (size_t)(length - cmtsize - 2)/*size of comment length field*/, + pkey, fota_sign_info.sig, fota_sign_info.sig_size, md); + get_ts1(&e); + if (ret != 0) + _DEBUG_ERROR("Signature verified NOK(%d) (%ldms)", ret, e_ts2(&s, &e)); + else + _DEBUG_INFO("Signature verified OK (%ldms)", e_ts2(&s, &e)); end: - if (pkey) - EVP_PKEY_free(pkey); - if (cert) - X509_free(cert); - if (fd) - close(fd); - - return ret; + if (pkey) + EVP_PKEY_free(pkey); + if (cert) + X509_free(cert); + if (fd) + close(fd); + + return ret; } diff --git a/src/rpi3/ua.c b/src/rpi3/ua.c index f04fd4d..dda68be 100644 --- a/src/rpi3/ua.c +++ b/src/rpi3/ua.c @@ -106,7 +106,7 @@ static int s_part_num = 0; static int s_initrd_version = 1; static ua_delta_info_t s_delta_info; unsigned int __log_level__ = - (LOG_DEBUG | LOG_FLASH | LOG_FILE | LOG_FUNCS | LOG_GUI | LOG_ENGINE | LOG_INFO); + (LOG_DEBUG | LOG_FLASH | LOG_FILE | LOG_FUNCS | LOG_GUI | LOG_ENGINE | LOG_INFO); FILE *__log_out_file__; static void save_result(int result); @@ -122,11 +122,10 @@ void fota_gui_update_progress(int percent) char cmd[1024]; static int s_percent = -1; - if (percent > s_percent) { + if (percent > s_percent) s_percent = percent; - } else { + else return; - } snprintf(cmd, sizeof(cmd)-1, "%s %d", FOTA_GUI_INTERFACE, percent); ret = _system_cmd_wait(cmd); @@ -156,18 +155,16 @@ void fota_gui_progress(void * pbUserData, unsigned long uPercent) ua_dataSS_t *ua_data = (ua_dataSS_t *)pbUserData; ua_update_data_t *ua_update_data = ua_data->update_data; - if (ua_op_mode == UA_OP_MODE_BG) { + if (ua_op_mode == UA_OP_MODE_BG) return; - } LOGL(LOG_FUNCS|LOG_GUI, "%s: ++ uPercent(%lu%%), config->weight=%lu\n", __func__, uPercent, (long unsigned int)ua_update_data->weight); - if(uPercent == 100) { + if (uPercent == 100) percent = ua_update_data->weight_offset + ua_update_data->weight; - } else { + else percent = ua_update_data->weight_offset + (ua_update_data->weight * uPercent / 100); - } /* re-arrange progress percentage betwen scout & update */ if (ua_data->ua_operation == UI_OP_SCOUT) { @@ -273,29 +270,25 @@ static int write_full_image(ua_part_info_t *ua_part_info, ua_update_data_t *ua_u LOG("read file read_count=%d byte, blk_cnt=%d\n", read_count, blk_cnt); if (read_count != bin_size) { LOGE("error in read size\n"); - if (data) { + if (data) free(data); - } - if (fp) { + if (fp) fclose(fp); - } return FAIL; } if (write_data_to_blkdev(ua_part_info->ua_blk_name, blk_start, blk_cnt, data) != SUCCESS) { - LOGE("error in write_data_to_blkdev()\n" ); + LOGE("error in write_data_to_blkdev()\n"); ret = FAIL; } - if (data) { + if (data) free(data); - } } - if (fp) { + if (fp) fclose(fp); - } LOG("%s leaved\n", __func__); @@ -312,15 +305,15 @@ int verify_Full_Image(int part_idx) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = UI_OP_SCOUT; ua_dataSS.ui_progress = fota_gui_progress; - if (ua_update_data->ua_delta_path != NULL){ + if (ua_update_data->ua_delta_path != NULL) { //commenting for now as FIXNV2 verification fails as nvitem changes after boot in device //should use skip_verify for such cases ret = SUCCESS;//SS_IMGVerfiyPartition(&ua_dataSS); @@ -350,8 +343,7 @@ int update_Full_Image(int part_idx) LOG("%s entered\n", __func__); ret = write_full_image(ua_part_info, ua_update_data, part_idx); - if(ret != SUCCESS) - { + if (ret != SUCCESS) { LOGE("%s entered\n", __func__); goto CleanUp; } @@ -375,11 +367,11 @@ int verify_Delta_FS(int part_idx) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = UI_OP_SCOUT; ua_dataSS.ui_progress = fota_gui_progress; if (ua_update_data->ua_delta_path != NULL) { @@ -400,17 +392,16 @@ int update_Delta_FS(int part_idx, unsigned long ui32Operation) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = ui32Operation; ua_dataSS.ui_progress = fota_gui_progress; - if (ua_update_data->ua_delta_path != NULL) { - ret=SS_FSUpdatemain(&ua_dataSS,part_idx); - } + if (ua_update_data->ua_delta_path != NULL) + ret = SS_FSUpdatemain(&ua_dataSS, part_idx); return ret; } @@ -426,17 +417,16 @@ int verify_Delta_IMG(int part_idx) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = UI_OP_SCOUT; ua_dataSS.ui_progress = fota_gui_progress; - if (ua_update_data->ua_delta_path != NULL){ + if (ua_update_data->ua_delta_path != NULL) ret = SS_IMGVerfiyPartition(&ua_dataSS); - } return ret; } @@ -451,17 +441,16 @@ int update_Delta_IMG(int part_idx, unsigned long ui32Operation) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = ui32Operation; ua_dataSS.ui_progress = fota_gui_progress; - ua_dataSS.write_data_to_blkdev=write_data_to_blkdev; - if (ua_update_data->ua_delta_path != NULL) { + ua_dataSS.write_data_to_blkdev = write_data_to_blkdev; + if (ua_update_data->ua_delta_path != NULL) ret = SS_IMGUpdatemain(&ua_dataSS, DELTA_IMG); - } return ret; } //RAMDISK.delta for recovery FS. @@ -474,22 +463,21 @@ int verify_RecoveryDelta_IMG(int part_idx, int update_type) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = UI_OP_SCOUT; ua_dataSS.ui_progress = fota_gui_progress; if (update_type == FULL_IMG) { - if (ua_update_data->ua_delta_path != NULL){ + if (ua_update_data->ua_delta_path != NULL) { ret = SUCCESS; fota_gui_progress(&ua_dataSS, 100); } } else if (update_type == DELTA_IMG) { - if (ua_update_data->ua_delta_path != NULL) { + if (ua_update_data->ua_delta_path != NULL) ret = SS_IMGVerfiyPartition(&ua_dataSS); - } } return ret; } @@ -502,17 +490,17 @@ int update_RecoveryDelta_IMG(int part_idx, int update_type) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.update_data->ua_temp_path = malloc(MAX_FILE_PATH); ua_dataSS.ua_operation = UI_OP_SCOUT_UPDATE; ua_dataSS.ui_progress = fota_gui_progress; if (ua_update_data->ua_delta_path != NULL && ua_dataSS.update_data->ua_temp_path) { snprintf(ua_dataSS.update_data->ua_temp_path, MAX_FILE_PATH, "%s/%s", RAMDISK_PATH, ua_dataSS.parti_info->ua_parti_name); - LOG("update_RecoveryDelta_IMG() [%s] temp path [%s]\n", ua_dataSS.parti_info->ua_parti_name,ua_dataSS.update_data->ua_temp_path); + LOG("update_RecoveryDelta_IMG() [%s] temp path [%s]\n", ua_dataSS.parti_info->ua_parti_name, ua_dataSS.update_data->ua_temp_path); ret = SS_IMGUpdatemain(&ua_dataSS, update_type); //PASS temp path whr file has to be written, Once written it should be UNLINKED after upgrade. } return ret; @@ -531,15 +519,13 @@ static void set_data_weight(unsigned int total_data_size) LOG("%s entered, total_data_size=%u\n", __func__, total_data_size); for (i = 0; i < s_part_num; i++) { - if(s_update_data[i].exist_check) - { + if (s_update_data[i].exist_check) { s_update_data[i].weight = 100 * (unsigned long long)s_update_data[i].data_size / total_data_size; - if(s_update_data[i].weight == 0) { + if (s_update_data[i].weight == 0) s_update_data[i].weight = 1; - } - if(weight < s_update_data[i].weight) { + if (weight < s_update_data[i].weight) { weight = s_update_data[i].weight; big = i; } @@ -551,11 +537,10 @@ static void set_data_weight(unsigned int total_data_size) i, s_update_data[i].exist_check, s_update_data[i].weight, total_weight); } - if(total_weight < 100) { + if (total_weight < 100) s_update_data[big].weight += (100 - total_weight); - } else { + else s_update_data[big].weight -= (total_weight - 100); - } LOG("[big: %d] weight=%u\n", big, s_update_data[big].weight); @@ -572,9 +557,8 @@ static void set_data_weight_offset(void) LOG("%s entered\n", __func__); for (i = 0; i < s_part_num; i++) { - for(k = 0; k < i; k++) { + for (k = 0; k < i; k++) s_update_data[i].weight_offset += s_update_data[k].weight; - } LOG("s_update_data[%d].weight_offset=%u\n", i, s_update_data[i].weight_offset); } @@ -592,9 +576,8 @@ int read_from_file(const char *path, char *buf, size_t size) if (!path) return -1; - if (size == 0) { + if (size == 0) return 0; - } fd = open(path, O_RDONLY, 0); LOG("open '%s'\n", path); @@ -644,9 +627,8 @@ int write_to_file(const char *path, char *buf, size_t size) count = write(fd, buf, size); LOG("write '%s'\n", buf); - if (fsync(fd) < 0) { + if (fsync(fd) < 0) LOG("fsync failed.\n"); - } close(fd); @@ -694,20 +676,17 @@ static int get_last_update_status(void) char buf[256]; int status = UP_START_NONE; - if (check_existence(fota_status_path) == 0) { + if (check_existence(fota_status_path) == 0) return UP_START_NONE; - } - if (read_from_file(fota_status_path, buf, sizeof(buf)) < 0) { + if (read_from_file(fota_status_path, buf, sizeof(buf)) < 0) return UP_START_NONE; - } status = atoi(buf); - if ((status > UP_START_NONE) && (status < UP_START_MAX)) { + if ((status > UP_START_NONE) && (status < UP_START_MAX)) return status; - } else { + else return UP_START_NONE; - } } /*----------------------------------------------------------------------------- @@ -759,11 +738,10 @@ int update_all() for (i = 0; i < s_part_num; i++) { item_size = tar_get_item_size(s_update_data[i].ua_delta_path, s_part_info[i].ua_subject_name); - if(item_size > 0) { + if (item_size > 0) s_update_data[i].data_size = (unsigned int)item_size; - } else { + else s_update_data[i].data_size = 0; - } LOGL(LOG_DEBUG, "s_update_data[%d].data_size=%lu, ua_delta_path=%s, " "ua_blk_name = %s, ua_subject_name=%s\n", i, @@ -789,7 +767,7 @@ int update_all() (long unsigned int)data_count, (long unsigned int)total_data_size); if (data_count == 0) { ret = UPI_DELTACOUNT_ERROR; - sleep(3); + sleep(3); goto CleanUp; } @@ -846,11 +824,10 @@ int update_all() for (part_idx = 0; part_idx < s_part_num; part_idx++) { update_status = part_idx; if (last_update_status <= update_status) { - if (last_update_status == update_status) { + if (last_update_status == update_status) ui32Operation = UI_OP_SCOUT_UPDATE; - } else { + else ui32Operation = UI_OP_UPDATE; - } if (s_update_data[part_idx].data_size > 0) { get_time_stamp(); @@ -887,7 +864,7 @@ int update_all() LOG("[%s] Update End ..............................................................\n", ts); CleanUp: - if(ret != OK) + if (ret != OK) save_cause(cause); return ret; @@ -920,8 +897,7 @@ void log_deinit(void) get_time_stamp(); LOG("===== log end [%s] =====\n", ts); - if(__log_out_file__) - { + if (__log_out_file__) { fclose(__log_out_file__); __log_out_file__ = NULL; } @@ -934,49 +910,49 @@ void log_deinit(void) ----------------------------------------------------------------------------*/ static void print_error_cause(int error) { - switch(error) { - case E_SS_PKG_CORRUPTED: - case E_SS_SOURCE_CORRUPTED: /* not used */ - case E_SS_IMGBADDELTA: - case E_SS_FSBADDELTA: - LOG("Corrupted firmware update package, did not store correctly. Detected, for example, by mismatched CRCs between actual and expected."); - break; - case E_SS_BAD_PARAMS: - LOG("Wrong Firmware Update Package delivered to device based on current device characteristics"); - break; - case E_SS_INVALID_DP_HEADER: - case E_SS_INVALID_DP_WRONG_SIGNATURE: - LOG("Failure to positively validate digital signature of firmware update package"); - break; - case E_SS_PKG_TOO_LONG: /* not used */ - LOG("Firmware Update Package is Not Acceptable"); - break; - case E_SS_NOT_ENOUGH_RAM: - case E_SS_MALLOC_ERROR: - LOG("The update fails because there isn't sufficient memory to update the device."); - break; - case E_SS_FSSRCBACKUPFAILED: - case E_SS_IMGSRCBACKUPFAILED: - case E_SS_IMGRECOVERYWRITEFAILED: - case E_SS_IMGFLASHWRITEFAIL: - case E_SS_WRITE_ERROR: - case E_SS_FSFAILEDTOBACKUPPATCHINFO: - case E_SS_FSBADATTRIBUTES: - LOG("The update failed because writing data to the device was unsuccessful."); - break; - case E_SS_FSSRCCURRUPTED: - case E_SS_IMGSRCCURRUPTED: - case E_SS_IMGSHA_MISMATCH: - case E_SS_FSSHA_MISMATCH: - case E_SS_FSFAILEDTOPARSEDELTACNT: - case E_SS_FSFAILEDTOOPENPATCHINFO: - case E_SS_FSFAILEDTOPARSEDELTAINFO: - LOG("The update failed because data was corrupted during update of device."); - break; - default: - LOG("another error"); - break; - } + switch (error) { + case E_SS_PKG_CORRUPTED: + case E_SS_SOURCE_CORRUPTED: /* not used */ + case E_SS_IMGBADDELTA: + case E_SS_FSBADDELTA: + LOG("Corrupted firmware update package, did not store correctly. Detected, for example, by mismatched CRCs between actual and expected."); + break; + case E_SS_BAD_PARAMS: + LOG("Wrong Firmware Update Package delivered to device based on current device characteristics"); + break; + case E_SS_INVALID_DP_HEADER: + case E_SS_INVALID_DP_WRONG_SIGNATURE: + LOG("Failure to positively validate digital signature of firmware update package"); + break; + case E_SS_PKG_TOO_LONG: /* not used */ + LOG("Firmware Update Package is Not Acceptable"); + break; + case E_SS_NOT_ENOUGH_RAM: + case E_SS_MALLOC_ERROR: + LOG("The update fails because there isn't sufficient memory to update the device."); + break; + case E_SS_FSSRCBACKUPFAILED: + case E_SS_IMGSRCBACKUPFAILED: + case E_SS_IMGRECOVERYWRITEFAILED: + case E_SS_IMGFLASHWRITEFAIL: + case E_SS_WRITE_ERROR: + case E_SS_FSFAILEDTOBACKUPPATCHINFO: + case E_SS_FSBADATTRIBUTES: + LOG("The update failed because writing data to the device was unsuccessful."); + break; + case E_SS_FSSRCCURRUPTED: + case E_SS_IMGSRCCURRUPTED: + case E_SS_IMGSHA_MISMATCH: + case E_SS_FSSHA_MISMATCH: + case E_SS_FSFAILEDTOPARSEDELTACNT: + case E_SS_FSFAILEDTOOPENPATCHINFO: + case E_SS_FSFAILEDTOPARSEDELTAINFO: + LOG("The update failed because data was corrupted during update of device."); + break; + default: + LOG("another error"); + break; + } } /* @@ -1092,7 +1068,7 @@ int fota_path_init(void) return FAIL; } - for(i = 0; i < s_part_num; i++) { + for (i = 0; i < s_part_num; i++) { s_update_data[i].ua_delta_path = malloc(MAX_FILE_PATH); if (s_update_data[i].ua_delta_path == NULL) { LOG("Memory allocation fail\n"); @@ -1110,14 +1086,13 @@ int fota_path_init(void) if (s_initrd_version == 0) { ret = mkdir("/opt/data/fota", S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH); - if (ret == 0 || ((ret == -1) && (errno == EEXIST))) { + if (ret == 0 || ((ret == -1) && (errno == EEXIST))) LOG("mkdir(/opt/data/fota) ok\n"); - } else { + else LOG("mkdir(/opt/data/fota) fail\n"); - } } - for(i = 0; i < s_part_num; i++) { + for (i = 0; i < s_part_num; i++) { LOG("s_part_info[UA_%s].ua_delta_path=%s\n", s_part_info[i].ua_parti_name, s_update_data[i].ua_delta_path); @@ -1132,12 +1107,12 @@ int fota_path_init(void) void fota_path_deinit(void) { int i; - for(i = 0; i < s_part_num; i++) { - if(s_update_data[i].ua_delta_path) { + for (i = 0; i < s_part_num; i++) { + if (s_update_data[i].ua_delta_path) { free(s_update_data[i].ua_delta_path); s_update_data[i].ua_delta_path = NULL; } - if(s_update_data[i].ua_temp_path) { + if (s_update_data[i].ua_temp_path) { free(s_update_data[i].ua_temp_path); s_update_data[i].ua_temp_path = NULL; } @@ -1175,7 +1150,7 @@ void remove_temp_files(void) char *ua_temp_path; struct stat sbuf; - for(i = 0; i < s_part_num; i++) { + for (i = 0; i < s_part_num; i++) { ua_temp_path = s_update_data[i].ua_temp_path; if (NULL == ua_temp_path) continue; @@ -1191,14 +1166,12 @@ void remove_temp_files(void) if (S_ISDIR(sbuf.st_mode)) { ret = rmdir(ua_temp_path); - if (ret < 0) { + if (ret < 0) LOG("rmdir(%s) failed with return value: %d errno: %d\n", ua_temp_path, ret, errno); - } } else { ret = unlink(ua_temp_path); - if (ret < 0) { + if (ret < 0) LOG("unlink(%s) failed with return value: %d errno: %d\n", ua_temp_path, ret, errno); - } } } } @@ -1225,10 +1198,9 @@ int get_part_idx(char* part_name) { int i; - for(i = UA_PARTI_START; i < UA_PARTI_MAX; i++) { - if (strcmp(part_name, def_part_info[i].ua_parti_name) == 0) { + for (i = UA_PARTI_START; i < UA_PARTI_MAX; i++) { + if (strcmp(part_name, def_part_info[i].ua_parti_name) == 0) return i; - } } return UA_PARTI_MAX; @@ -1256,18 +1228,18 @@ int fota_blkid_update(void) return 1; } - if ((fscanf(fp, "%d", &num_part)<0)||(num_part<=0)||(num_part>=MAX_PART_TBL_ITEM)) { + if ((fscanf(fp, "%d", &num_part) < 0) || (num_part <= 0) || (num_part >= MAX_PART_TBL_ITEM)) { LOG("fail to fscanf() or num_part is 0\n"); fclose(fp); return -1; } - for (i=0; i>>>>>>>>>>>\n", ver_str); } else { LOG("[SS_GetUPIVersion fail] \n"); diff --git a/src/rpi3/ua.h b/src/rpi3/ua.h index 1ef619e..f316f5b 100644 --- a/src/rpi3/ua.h +++ b/src/rpi3/ua.h @@ -137,12 +137,12 @@ typedef enum { EXTRA } UA_DATA_FORMAT; -typedef enum{ +typedef enum { UA_MODE_SCOUT_UPDATE, UA_MODE_SCOUT, UA_MODE_VERIFYTARGET, UA_MODE_UPDATE, - UA_MODE_SUPPLYIMFOM=200 + UA_MODE_SUPPLYIMFOM = 200 } UA_OPERATION_MODE; typedef struct _ua_update_data_t { @@ -202,7 +202,7 @@ typedef struct _ua_dataSS_t { // partition operations ua_delta_info_t *update_delta; unsigned long ua_operation; void (*ui_progress)(void *, unsigned long); - int (*write_data_to_blkdev)(char* , int , int , char* ); + int (*write_data_to_blkdev)(char *, int, int, char *); } ua_dataSS_t; void log_deinit(void); #endif diff --git a/src/tw1/ua.c b/src/tw1/ua.c index 2f70d1b..ed67a5e 100755 --- a/src/tw1/ua.c +++ b/src/tw1/ua.c @@ -61,10 +61,10 @@ static char temp_folder[MAX_FILE_PATH]; static ua_part_info_t def_part_info[UA_PARTI_MAX] = { {"ROOTFS", "delta.rootfs", "", 0}, - {"BOOT", "delta.boot", "", 0}, - {"RAMDISK1", "delta.ramdisk1", "", 0} + {"BOOT", "delta.boot", "", 0}, + {"RAMDISK1", "delta.ramdisk1", "", 0} #ifdef SS_RECOVERYRAMDISK - ,{"RAMDISK2", "delta.ramdisk2", "/dev/mmcblk0p4", 0} + , {"RAMDISK2", "delta.ramdisk2", "/dev/mmcblk0p4", 0} #endif }; @@ -74,7 +74,7 @@ static ua_update_cfg_t def_update_cfg[UA_PARTI_MAX] = { {DELTA_IMG, UA_BOOT, 0, 0}, {DELTA_IMG, UA_RAMDISK1, 0, 0} #ifdef SS_RECOVERYRAMDISK - ,{EXTRA, UA_RAMDISK2, 0, 0} + , {EXTRA, UA_RAMDISK2, 0, 0} #endif }; @@ -83,11 +83,11 @@ static ua_part_info_t s_part_info[UA_PARTI_MAX]; static ua_update_cfg_t s_update_cfg[UA_PARTI_MAX]; static ua_update_data_t s_update_data[UA_PARTI_MAX] = { - {0, 0, 0, 0, 0, 0, NULL, NULL}, - {0, 0, 0, 0, 0, 0, NULL, NULL}, - {0, 0, 0, 0, 0, 0, NULL, NULL} + {0, 0, 0, 0, 0, 0, NULL, NULL}, + {0, 0, 0, 0, 0, 0, NULL, NULL}, + {0, 0, 0, 0, 0, 0, NULL, NULL} #ifdef SS_RECOVERYRAMDISK - ,{0, 0, 0, 0, 0, 0, NULL, NULL} + , {0, 0, 0, 0, 0, 0, NULL, NULL} #endif }; @@ -109,7 +109,7 @@ static int s_part_num = 0; static ua_delta_info_t s_delta_info; unsigned int __log_level__ = - (LOG_DEBUG | LOG_FLASH | LOG_FILE | LOG_FUNCS | LOG_GUI | LOG_ENGINE | LOG_INFO); + (LOG_DEBUG | LOG_FLASH | LOG_FILE | LOG_FUNCS | LOG_GUI | LOG_ENGINE | LOG_INFO); FILE *__log_out_file__; static void save_result(int result); @@ -153,18 +153,16 @@ void fota_gui_progress(void * pbUserData, unsigned long uPercent) ua_dataSS_t *ua_data = (ua_dataSS_t *)pbUserData; ua_update_data_t *ua_update_data = ua_data->update_data; - if (ua_op_mode == UA_OP_MODE_BG) { + if (ua_op_mode == UA_OP_MODE_BG) return; - } LOGL(LOG_FUNCS|LOG_GUI, "%s: ++ uPercent(%lu%%), config->weight=%lu\n", __func__, uPercent, (long unsigned int)ua_update_data->weight); - if(uPercent == 100) { + if (uPercent == 100) percent = ua_update_data->weight_offset + ua_update_data->weight; - } else { + else percent = ua_update_data->weight_offset + (ua_update_data->weight * uPercent / 100); - } /* re-arrange progress percentage betwen scout & update */ if (ua_data->ua_operation == UI_OP_SCOUT) { @@ -271,29 +269,25 @@ static int write_full_image(ua_dataSS_t* ua_data, int part_idx) LOG("read file read_count=%d byte, blk_cnt=%d\n", read_count, blk_cnt); if (read_count != bin_size) { LOGE("error in read size\n"); - if (data) { + if (data) free(data); - } - if (fp) { + if (fp) fclose(fp); - } return FAIL; } if (write_data_to_blkdev(ua_part_info->ua_blk_name, blk_start, blk_cnt, data) != SUCCESS) { - LOGE("error in write_data_to_blkdev()\n" ); + LOGE("error in write_data_to_blkdev()\n"); ret = FAIL; } - if (data) { + if (data) free(data); - } } - if (fp) { + if (fp) fclose(fp); - } LOG("%s leaved\n", __func__); @@ -311,16 +305,16 @@ int verify_Full_Image(int part_idx) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = UI_OP_SCOUT; ua_dataSS.ui_progress = fota_gui_progress; //last_update_status = get_last_update_status(); - if (ua_update_data->ua_delta_path != NULL){ + if (ua_update_data->ua_delta_path != NULL) { ret = SUCCESS;//SS_IMGVerfiyPartition(&ua_dataSS); fota_gui_progress(&ua_dataSS, 100); } @@ -347,8 +341,7 @@ int update_Full_Image(int part_idx) LOG("%s entered\n", __func__); ret = write_full_image(&ua_data, part_idx); - if(ret != SUCCESS) - { + if (ret != SUCCESS) { LOGE("%s entered\n", __func__); goto CleanUp; } @@ -372,11 +365,11 @@ int verify_Delta_FS(int part_idx) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = UI_OP_SCOUT; ua_dataSS.ui_progress = fota_gui_progress; //last_update_status = get_last_update_status(); @@ -400,17 +393,16 @@ int update_Delta_FS(int part_idx, unsigned long ui32Operation) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = ui32Operation; ua_dataSS.ui_progress = fota_gui_progress; - if (ua_update_data->ua_delta_path != NULL) { - ret=SS_FSUpdatemain(&ua_dataSS,part_idx); - } + if (ua_update_data->ua_delta_path != NULL) + ret = SS_FSUpdatemain(&ua_dataSS, part_idx); return ret; } @@ -426,7 +418,7 @@ int verify_Delta_IMG(int part_idx) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; #if defined(PT_FOTA_USE_LOCAL_TEMP)// NOT sure for TOTA, shd check this size = check_existence(ua_update_data->ua_temp_path); if (size == 0) @@ -436,14 +428,13 @@ int verify_Delta_IMG(int part_idx) ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = UI_OP_SCOUT; ua_dataSS.ui_progress = fota_gui_progress; //last_update_status = get_last_update_status(); - if (ua_update_data->ua_delta_path != NULL) { + if (ua_update_data->ua_delta_path != NULL) ret = SS_IMGVerfiyPartition(&ua_dataSS); - } return ret; } @@ -464,17 +455,16 @@ int update_Delta_IMG(int part_idx, unsigned long ui32Operation) if (size == 0) make_temp_file(ua_update_data->ua_temp_path, TEMP_SIZE); #endif - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = ui32Operation; ua_dataSS.ui_progress = fota_gui_progress; - ua_dataSS.write_data_to_blkdev=write_data_to_blkdev; - if (ua_update_data->ua_delta_path != NULL) { + ua_dataSS.write_data_to_blkdev = write_data_to_blkdev; + if (ua_update_data->ua_delta_path != NULL) ret = SS_IMGUpdatemain(&ua_dataSS, DELTA_IMG); - } return ret; } @@ -486,22 +476,21 @@ int verify_RecoveryDelta_IMG(int part_idx, int update_type) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.ua_operation = UI_OP_SCOUT; ua_dataSS.ui_progress = fota_gui_progress; if (update_type == FULL_IMG) { - if (ua_update_data->ua_delta_path != NULL){ + if (ua_update_data->ua_delta_path != NULL) { ret = SUCCESS; fota_gui_progress(&ua_dataSS, 100); } } else if (update_type == DELTA_IMG) { - if (ua_update_data->ua_delta_path != NULL) { + if (ua_update_data->ua_delta_path != NULL) ret = SS_IMGVerfiyPartition(&ua_dataSS); - } } return ret; } @@ -514,11 +503,11 @@ int update_RecoveryDelta_IMG(int part_idx, int update_type) ua_part_info_t *ua_part_info = &s_part_info[part_idx]; ua_update_cfg_t *ua_update_cfg = &s_update_cfg[part_idx]; ua_update_data_t *ua_update_data = &s_update_data[part_idx]; - ua_delta_info_t *ua_delta_info= &s_delta_info; + ua_delta_info_t *ua_delta_info = &s_delta_info; ua_dataSS.parti_info = ua_part_info; ua_dataSS.update_cfg = ua_update_cfg; ua_dataSS.update_data = ua_update_data; - ua_dataSS.update_delta=ua_delta_info; + ua_dataSS.update_delta = ua_delta_info; ua_dataSS.update_data->ua_temp_path = malloc(MAX_FILE_PATH); ua_dataSS.ua_operation = UI_OP_SCOUT_UPDATE; ua_dataSS.ui_progress = fota_gui_progress; @@ -526,7 +515,7 @@ int update_RecoveryDelta_IMG(int part_idx, int update_type) if (ua_update_data->ua_delta_path != NULL && ua_dataSS.update_data->ua_temp_path) { snprintf(ua_dataSS.update_data->ua_temp_path, MAX_FILE_PATH, "%s/%s", RAMDISK_PATH, ua_dataSS.parti_info->ua_parti_name); - LOG("update_RecoveryDelta_IMG() [%s] temp path [%s]\n", ua_dataSS.parti_info->ua_parti_name,ua_dataSS.update_data->ua_temp_path); + LOG("update_RecoveryDelta_IMG() [%s] temp path [%s]\n", ua_dataSS.parti_info->ua_parti_name, ua_dataSS.update_data->ua_temp_path); ret = SS_IMGUpdatemain(&ua_dataSS, update_type); //PASS temp path whr file has to be written, Once written it should be UNLINKED after upgrade. } return ret; @@ -545,15 +534,13 @@ static void set_data_weight(unsigned int total_data_size) LOG("%s entered, total_data_size=%u\n", __func__, total_data_size); for (i = 0; i < s_part_num; i++) { - if(s_update_data[i].exist_check) - { + if (s_update_data[i].exist_check) { s_update_data[i].weight = 100 * (unsigned long long)s_update_data[i].data_size / total_data_size; - if(s_update_data[i].weight == 0) { + if (s_update_data[i].weight == 0) s_update_data[i].weight = 1; - } - if(weight < s_update_data[i].weight) { + if (weight < s_update_data[i].weight) { weight = s_update_data[i].weight; big = i; } @@ -565,11 +552,10 @@ static void set_data_weight(unsigned int total_data_size) i, s_update_data[i].exist_check, s_update_data[i].weight, total_weight); } - if(total_weight < 100) { + if (total_weight < 100) s_update_data[big].weight += (100 - total_weight); - } else { + else s_update_data[big].weight -= (total_weight - 100); - } LOG("[big: %d] weight=%u\n", big, s_update_data[big].weight); @@ -586,9 +572,9 @@ static void set_data_weight_offset(void) LOG("%s entered\n", __func__); for (i = 0; i < s_part_num; i++) { - for(k = 0; k < i; k++) { + for (k = 0; k < i; k++) s_update_data[i].weight_offset += s_update_data[k].weight; - } + LOG("s_update_data[%d].weight_offset=%u\n", i, s_update_data[i].weight_offset); } @@ -606,9 +592,8 @@ int read_from_file(const char *path, char *buf, size_t size) if (!path) return -1; - if (size == 0) { + if (size == 0) return 0; - } fd = open(path, O_RDONLY, 0); LOG("open '%s'\n", path); @@ -658,9 +643,8 @@ int write_to_file(const char *path, char *buf, size_t size) count = write(fd, buf, size); LOG("write '%s'\n", buf); - if (fsync(fd) < 0) { + if (fsync(fd) < 0) LOG("fsync failed.\n"); - } close(fd); @@ -708,20 +692,17 @@ static int get_last_update_status(void) char buf[256]; int status = UP_START_NONE; - if (check_existence(fota_status_path) == 0) { + if (check_existence(fota_status_path) == 0) return UP_START_NONE; - } - if (read_from_file(fota_status_path, buf, sizeof(buf)) < 0) { + if (read_from_file(fota_status_path, buf, sizeof(buf)) < 0) return UP_START_NONE; - } status = atoi(buf); - if ((status > UP_START_NONE) && (status < UP_START_MAX)) { + if ((status > UP_START_NONE) && (status < UP_START_MAX)) return status; - } else { + else return UP_START_NONE; - } } /*----------------------------------------------------------------------------- @@ -773,11 +754,11 @@ int update_all() for (i = 0; i < s_part_num; i++) { item_size = tar_get_item_size(s_update_data[i].ua_delta_path, s_part_info[i].ua_subject_name); - if(item_size > 0) { + if (item_size > 0) s_update_data[i].data_size = (unsigned int)item_size; - } else { + else s_update_data[i].data_size = 0; - } + LOGL(LOG_DEBUG, "s_update_data[%d].data_size=%lu, ua_delta_path=%s, " "ua_blk_name = %s, ua_subject_name=%s\n", i, @@ -793,9 +774,9 @@ int update_all() total_data_size += s_update_data[i].data_size; LOGL(LOG_DEBUG, - "Check Delta : part_idx(%d), file_path(%s), total data cnt(%lu)\n", - i, s_update_data[i].ua_delta_path, - (long unsigned int)data_count); + "Check Delta : part_idx(%d), file_path(%s), total data cnt(%lu)\n", + i, s_update_data[i].ua_delta_path, + (long unsigned int)data_count); } } @@ -803,7 +784,7 @@ int update_all() (long unsigned int)data_count, (long unsigned int)total_data_size); if (data_count == 0) { ret = UPI_DELTACOUNT_ERROR; - sleep(3); + sleep(3); goto CleanUp; } @@ -821,8 +802,7 @@ int update_all() last_update_status = get_last_update_status(); LOG("Updatea_all() Last Update status To start with [%d] \n", last_update_status); /* Verify */ - if (last_update_status == UP_START_NONE) - { + if (last_update_status == UP_START_NONE) { for (part_idx = 0; part_idx < s_part_num; part_idx++) { if (s_update_data[part_idx].data_size > 0) { get_time_stamp(); @@ -861,11 +841,10 @@ int update_all() for (part_idx = 0; part_idx < s_part_num; part_idx++) { update_status = part_idx; if (last_update_status <= update_status) { - if (last_update_status == update_status) { + if (last_update_status == update_status) ui32Operation = UI_OP_SCOUT_UPDATE; - } else { + else ui32Operation = UI_OP_UPDATE; - } if (s_update_data[part_idx].data_size > 0) { get_time_stamp(); @@ -902,7 +881,7 @@ int update_all() LOG("[%s] Update End ..............................................................\n", ts); CleanUp: - if(ret != OK) + if (ret != OK) save_cause(cause); return ret; @@ -936,8 +915,7 @@ void log_deinit(void) get_time_stamp(); LOG("===== log end [%s] =====\n", ts); - if(__log_out_file__) - { + if (__log_out_file__) { fclose(__log_out_file__); __log_out_file__ = NULL; } @@ -950,28 +928,28 @@ void log_deinit(void) ----------------------------------------------------------------------------*/ static void print_error_cause(int error) { - switch(error) { - case E_SS_PKG_CORRUPTED: - case E_SS_SOURCE_CORRUPTED: /* not used */ - LOG("Corrupted firmware update package, did not store correctly. Detected, for example, by mismatched CRCs between actual and expected."); - break; - case E_SS_BAD_PARAMS: - LOG("Wrong Firmware Update Package delivered to device based on current device characteristics"); - break; - case E_SS_INVALID_DP_HEADER: - case E_SS_INVALID_DP_WRONG_SIGNATURE: - LOG("Failure to positively validate digital signature of firmware update package"); - break; - case E_SS_PKG_TOO_LONG: /* not used */ - LOG("Firmware Update Package is Not Acceptable"); - break; - case E_SS_NOT_ENOUGH_RAM: - LOG("The update fails because there isn't sufficient memory to update the device."); - break; - default: - LOG("another error"); - break; - } + switch (error) { + case E_SS_PKG_CORRUPTED: + case E_SS_SOURCE_CORRUPTED: /* not used */ + LOG("Corrupted firmware update package, did not store correctly. Detected, for example, by mismatched CRCs between actual and expected."); + break; + case E_SS_BAD_PARAMS: + LOG("Wrong Firmware Update Package delivered to device based on current device characteristics"); + break; + case E_SS_INVALID_DP_HEADER: + case E_SS_INVALID_DP_WRONG_SIGNATURE: + LOG("Failure to positively validate digital signature of firmware update package"); + break; + case E_SS_PKG_TOO_LONG: /* not used */ + LOG("Firmware Update Package is Not Acceptable"); + break; + case E_SS_NOT_ENOUGH_RAM: + LOG("The update fails because there isn't sufficient memory to update the device."); + break; + default: + LOG("another error"); + break; + } } /* @@ -1064,7 +1042,7 @@ int fota_path_init(void) return FAIL; } - for(i = 0; i < s_part_num; i++) { + for (i = 0; i < s_part_num; i++) { s_update_data[i].ua_delta_path = malloc(MAX_FILE_PATH); if (s_update_data[i].ua_delta_path == NULL) { LOG("Memory allocation fail\n"); @@ -1080,7 +1058,7 @@ int fota_path_init(void) snprintf(fota_cause, sizeof(fota_cause), "%s/%s", result_folder, "cause"); snprintf(fota_status_path, sizeof(fota_status_path), "%s/%s", result_folder, UP_STATUS_FILE); - for(i = 0; i < s_part_num; i++) { + for (i = 0; i < s_part_num; i++) { LOG("s_part_info[UA_%s].ua_delta_path=%s\n", s_part_info[i].ua_parti_name, s_update_data[i].ua_delta_path); @@ -1095,12 +1073,12 @@ int fota_path_init(void) void fota_path_deinit(void) { int i; - for(i = 0; i < s_part_num; i++) { - if(s_update_data[i].ua_delta_path) { + for (i = 0; i < s_part_num; i++) { + if (s_update_data[i].ua_delta_path) { free(s_update_data[i].ua_delta_path); s_update_data[i].ua_delta_path = NULL; } - if(s_update_data[i].ua_temp_path) { + if (s_update_data[i].ua_temp_path) { free(s_update_data[i].ua_temp_path); s_update_data[i].ua_temp_path = NULL; } @@ -1138,7 +1116,7 @@ void remove_temp_files(void) char *ua_temp_path; struct stat sbuf; - for(i = 0; i < s_part_num; i++) { + for (i = 0; i < s_part_num; i++) { ua_temp_path = s_update_data[i].ua_temp_path; if (NULL == ua_temp_path) continue; @@ -1154,14 +1132,12 @@ void remove_temp_files(void) if (S_ISDIR(sbuf.st_mode)) { ret = rmdir(ua_temp_path); - if (ret < 0) { + if (ret < 0) LOG("rmdir(%s) failed with return value: %d errno: %d\n", ua_temp_path, ret, errno); - } } else { ret = unlink(ua_temp_path); - if (ret < 0) { + if (ret < 0) LOG("unlink(%s) failed with return value: %d errno: %d\n", ua_temp_path, ret, errno); - } } } } @@ -1188,10 +1164,9 @@ int get_part_idx(char* part_name) { int i; - for(i = UA_ROOTFS; i < UA_PARTI_MAX; i++) { - if (strcmp(part_name, def_part_info[i].ua_parti_name) == 0) { + for (i = UA_ROOTFS; i < UA_PARTI_MAX; i++) { + if (strcmp(part_name, def_part_info[i].ua_parti_name) == 0) return i; - } } return UA_PARTI_MAX; @@ -1219,18 +1194,18 @@ int fota_blkid_update(void) return -1; } - if ((fscanf(fp, "%d", &num_part)<0)||(num_part<=0)||(num_part>=MAX_PART_TBL_ITEM)) { + if ((fscanf(fp, "%d", &num_part) < 0) || (num_part <= 0) || (num_part >= MAX_PART_TBL_ITEM)) { LOG("fail to fscanf() or num_part is 0\n"); fclose(fp); return -1; } - for (i=0; i