Patchwork lib: fwts_log_*: fix a few smatch errors

login
register
mail settings
Submitter Colin King
Date March 6, 2013, 6:49 p.m.
Message ID <1362595747-2847-1-git-send-email-colin.king@canonical.com>
Download mbox | patch
Permalink /patch/225575/
State Accepted
Headers show

Comments

Colin King - March 6, 2013, 6:49 p.m.
From: Colin Ian King <colin.king@canonical.com>

Minor re-working to fix up some smatch errors in fwts_log_*.c,
for example:

fwts_log_xml.c:142 fwts_log_section_begin_xml() error:
  testing array offset 'xml_stack_index' after use.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/lib/src/fwts_log_html.c | 7 +++----
 src/lib/src/fwts_log_json.c | 8 ++++----
 src/lib/src/fwts_log_xml.c  | 7 +++----
 3 files changed, 10 insertions(+), 12 deletions(-)
Keng-Yu Lin - March 8, 2013, 8:36 a.m.
On Thu, Mar 7, 2013 at 2:49 AM, Colin King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Minor re-working to fix up some smatch errors in fwts_log_*.c,
> for example:
>
> fwts_log_xml.c:142 fwts_log_section_begin_xml() error:
>   testing array offset 'xml_stack_index' after use.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/lib/src/fwts_log_html.c | 7 +++----
>  src/lib/src/fwts_log_json.c | 8 ++++----
>  src/lib/src/fwts_log_xml.c  | 7 +++----
>  3 files changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/src/lib/src/fwts_log_html.c b/src/lib/src/fwts_log_html.c
> index 4b907c5..89557d4 100644
> --- a/src/lib/src/fwts_log_html.c
> +++ b/src/lib/src/fwts_log_html.c
> @@ -376,8 +376,6 @@ static void fwts_log_newline_html(fwts_log_file *log_file)
>
>  static void fwts_log_section_begin_html(fwts_log_file *log_file, const char *name)
>  {
> -       html_stack[html_stack_index].name = name;
> -
>         if (!strcmp(name, "summary")) {
>                 fwts_log_html(log_file, "<TR><TD class=style_heading COLSPAN=2>Summary</TD></TR>\n");
>         } else if (!strcmp(name, "heading")) {
> @@ -390,9 +388,10 @@ static void fwts_log_section_begin_html(fwts_log_file *log_file, const char *nam
>
>         fflush(log_file->fp);
>
> -       if (html_stack_index < MAX_HTML_STACK)
> +       if (html_stack_index < MAX_HTML_STACK) {
> +               html_stack[html_stack_index].name = name;
>                 html_stack_index++;
> -       else  {
> +       } else  {
>                 fprintf(stderr, "html log stack overflow pushing section %s.\n", name);
>                 exit(EXIT_FAILURE);
>         }
> diff --git a/src/lib/src/fwts_log_json.c b/src/lib/src/fwts_log_json.c
> index f83abc5..bf28c0c 100644
> --- a/src/lib/src/fwts_log_json.c
> +++ b/src/lib/src/fwts_log_json.c
> @@ -178,16 +178,16 @@ static void fwts_log_section_begin_json(fwts_log_file *log_file, const char *nam
>          */
>         json_object_object_add(json_obj, name, json_log);
>
> -       json_stack[json_stack_index].obj = json_obj;
> -       json_stack[json_stack_index].log = json_log;
>
>         if (json_stack_index > 0)
>                 if (json_object_array_add(json_stack[json_stack_index-1].log, json_obj) != 0)
>                         fwts_log_out_of_memory_json();
>
> -       if (json_stack_index < MAX_JSON_STACK)
> +       if (json_stack_index < MAX_JSON_STACK) {
> +               json_stack[json_stack_index].obj = json_obj;
> +               json_stack[json_stack_index].log = json_log;
>                 json_stack_index++;
> -       else  {
> +       } else  {
>                 fprintf(stderr, "json log stack overflow pushing section %s.\n", name);
>                 exit(EXIT_FAILURE);
>         }
> diff --git a/src/lib/src/fwts_log_xml.c b/src/lib/src/fwts_log_xml.c
> index b737357..393dfbe 100644
> --- a/src/lib/src/fwts_log_xml.c
> +++ b/src/lib/src/fwts_log_xml.c
> @@ -134,14 +134,13 @@ static void fwts_log_newline_xml(fwts_log_file *log_file)
>
>  static void fwts_log_section_begin_xml(fwts_log_file *log_file, const char *name)
>  {
> -       xml_stack[xml_stack_index].name = name;
> -
>         fprintf(log_file->fp, "%*s<%s>\n", xml_stack_index * XML_INDENT, "", name);
>         fflush(log_file->fp);
>
> -       if (xml_stack_index < MAX_XML_STACK)
> +       if (xml_stack_index < MAX_XML_STACK) {
> +               xml_stack[xml_stack_index].name = name;
>                 xml_stack_index++;
> -       else  {
> +       } else  {
>                 fprintf(stderr, "xml log stack overflow pushing section %s.\n", name);
>                 exit(EXIT_FAILURE);
>         }
> --
> 1.8.1.2
>
Acked-by: Keng-Yu Lin <kengyu@canonical.com>
Ivan Hu - March 8, 2013, 9:13 a.m.
On 03/07/2013 02:49 AM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> Minor re-working to fix up some smatch errors in fwts_log_*.c,
> for example:
>
> fwts_log_xml.c:142 fwts_log_section_begin_xml() error:
>    testing array offset 'xml_stack_index' after use.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/lib/src/fwts_log_html.c | 7 +++----
>   src/lib/src/fwts_log_json.c | 8 ++++----
>   src/lib/src/fwts_log_xml.c  | 7 +++----
>   3 files changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/src/lib/src/fwts_log_html.c b/src/lib/src/fwts_log_html.c
> index 4b907c5..89557d4 100644
> --- a/src/lib/src/fwts_log_html.c
> +++ b/src/lib/src/fwts_log_html.c
> @@ -376,8 +376,6 @@ static void fwts_log_newline_html(fwts_log_file *log_file)
>
>   static void fwts_log_section_begin_html(fwts_log_file *log_file, const char *name)
>   {
> -	html_stack[html_stack_index].name = name;
> -
>   	if (!strcmp(name, "summary")) {
>   		fwts_log_html(log_file, "<TR><TD class=style_heading COLSPAN=2>Summary</TD></TR>\n");
>   	} else if (!strcmp(name, "heading")) {
> @@ -390,9 +388,10 @@ static void fwts_log_section_begin_html(fwts_log_file *log_file, const char *nam
>
>   	fflush(log_file->fp);
>
> -	if (html_stack_index < MAX_HTML_STACK)
> +	if (html_stack_index < MAX_HTML_STACK) {
> +		html_stack[html_stack_index].name = name;
>   		html_stack_index++;
> -	else  {
> +	} else  {
>   		fprintf(stderr, "html log stack overflow pushing section %s.\n", name);
>   		exit(EXIT_FAILURE);
>   	}
> diff --git a/src/lib/src/fwts_log_json.c b/src/lib/src/fwts_log_json.c
> index f83abc5..bf28c0c 100644
> --- a/src/lib/src/fwts_log_json.c
> +++ b/src/lib/src/fwts_log_json.c
> @@ -178,16 +178,16 @@ static void fwts_log_section_begin_json(fwts_log_file *log_file, const char *nam
>   	 */
>   	json_object_object_add(json_obj, name, json_log);
>
> -	json_stack[json_stack_index].obj = json_obj;
> -	json_stack[json_stack_index].log = json_log;
>
>   	if (json_stack_index > 0)
>   		if (json_object_array_add(json_stack[json_stack_index-1].log, json_obj) != 0)
>   			fwts_log_out_of_memory_json();
>
> -	if (json_stack_index < MAX_JSON_STACK)
> +	if (json_stack_index < MAX_JSON_STACK) {
> +		json_stack[json_stack_index].obj = json_obj;
> +		json_stack[json_stack_index].log = json_log;
>   		json_stack_index++;
> -	else  {
> +	} else  {
>   		fprintf(stderr, "json log stack overflow pushing section %s.\n", name);
>   		exit(EXIT_FAILURE);
>   	}
> diff --git a/src/lib/src/fwts_log_xml.c b/src/lib/src/fwts_log_xml.c
> index b737357..393dfbe 100644
> --- a/src/lib/src/fwts_log_xml.c
> +++ b/src/lib/src/fwts_log_xml.c
> @@ -134,14 +134,13 @@ static void fwts_log_newline_xml(fwts_log_file *log_file)
>
>   static void fwts_log_section_begin_xml(fwts_log_file *log_file, const char *name)
>   {
> -	xml_stack[xml_stack_index].name = name;
> -
>   	fprintf(log_file->fp, "%*s<%s>\n", xml_stack_index * XML_INDENT, "", name);
>   	fflush(log_file->fp);
>
> -	if (xml_stack_index < MAX_XML_STACK)
> +	if (xml_stack_index < MAX_XML_STACK) {
> +		xml_stack[xml_stack_index].name = name;
>   		xml_stack_index++;
> -	else  {
> +	} else  {
>   		fprintf(stderr, "xml log stack overflow pushing section %s.\n", name);
>   		exit(EXIT_FAILURE);
>   	}
>
Acked-by: Ivan Hu <ivan.hu@canonical.com>

Patch

diff --git a/src/lib/src/fwts_log_html.c b/src/lib/src/fwts_log_html.c
index 4b907c5..89557d4 100644
--- a/src/lib/src/fwts_log_html.c
+++ b/src/lib/src/fwts_log_html.c
@@ -376,8 +376,6 @@  static void fwts_log_newline_html(fwts_log_file *log_file)
 
 static void fwts_log_section_begin_html(fwts_log_file *log_file, const char *name)
 {
-	html_stack[html_stack_index].name = name;
-
 	if (!strcmp(name, "summary")) {
 		fwts_log_html(log_file, "<TR><TD class=style_heading COLSPAN=2>Summary</TD></TR>\n");
 	} else if (!strcmp(name, "heading")) {
@@ -390,9 +388,10 @@  static void fwts_log_section_begin_html(fwts_log_file *log_file, const char *nam
 
 	fflush(log_file->fp);
 
-	if (html_stack_index < MAX_HTML_STACK)
+	if (html_stack_index < MAX_HTML_STACK) {
+		html_stack[html_stack_index].name = name;
 		html_stack_index++;
-	else  {
+	} else  {
 		fprintf(stderr, "html log stack overflow pushing section %s.\n", name);
 		exit(EXIT_FAILURE);
 	}
diff --git a/src/lib/src/fwts_log_json.c b/src/lib/src/fwts_log_json.c
index f83abc5..bf28c0c 100644
--- a/src/lib/src/fwts_log_json.c
+++ b/src/lib/src/fwts_log_json.c
@@ -178,16 +178,16 @@  static void fwts_log_section_begin_json(fwts_log_file *log_file, const char *nam
 	 */
 	json_object_object_add(json_obj, name, json_log);
 
-	json_stack[json_stack_index].obj = json_obj;
-	json_stack[json_stack_index].log = json_log;
 
 	if (json_stack_index > 0)
 		if (json_object_array_add(json_stack[json_stack_index-1].log, json_obj) != 0)
 			fwts_log_out_of_memory_json();
 
-	if (json_stack_index < MAX_JSON_STACK)
+	if (json_stack_index < MAX_JSON_STACK) {
+		json_stack[json_stack_index].obj = json_obj;
+		json_stack[json_stack_index].log = json_log;
 		json_stack_index++;
-	else  {
+	} else  {
 		fprintf(stderr, "json log stack overflow pushing section %s.\n", name);
 		exit(EXIT_FAILURE);
 	}
diff --git a/src/lib/src/fwts_log_xml.c b/src/lib/src/fwts_log_xml.c
index b737357..393dfbe 100644
--- a/src/lib/src/fwts_log_xml.c
+++ b/src/lib/src/fwts_log_xml.c
@@ -134,14 +134,13 @@  static void fwts_log_newline_xml(fwts_log_file *log_file)
 
 static void fwts_log_section_begin_xml(fwts_log_file *log_file, const char *name)
 {
-	xml_stack[xml_stack_index].name = name;
-
 	fprintf(log_file->fp, "%*s<%s>\n", xml_stack_index * XML_INDENT, "", name);
 	fflush(log_file->fp);
 
-	if (xml_stack_index < MAX_XML_STACK)
+	if (xml_stack_index < MAX_XML_STACK) {
+		xml_stack[xml_stack_index].name = name;
 		xml_stack_index++;
-	else  {
+	} else  {
 		fprintf(stderr, "xml log stack overflow pushing section %s.\n", name);
 		exit(EXIT_FAILURE);
 	}