diff mbox series

[2/2] secilc: better error handling

Message ID 20180924181052.130507-2-nnk@google.com (mailing list archive)
State Not Applicable
Headers show
Series [1/2] whitespace and spelling cleanup | expand

Commit Message

Jann Horn via Selinux Sept. 24, 2018, 6:10 p.m. UTC
Fix a situation where the secilc command line tool could return success
even though the compilation failed.

  $ secilc /dev/null -o /dev/null -f /dev/null
  Failure reading file: /dev/null
  $ echo $?
  0

Signed-off-by: Nick Kralevich <nnk@google.com>
---
 secilc/secilc.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

William Roberts Sept. 24, 2018, 6:58 p.m. UTC | #1
ack

On Mon, Sep 24, 2018 at 11:12 AM Nick Kralevich via Selinux <
selinux@tycho.nsa.gov> wrote:

> Fix a situation where the secilc command line tool could return success
> even though the compilation failed.
>
>   $ secilc /dev/null -o /dev/null -f /dev/null
>   Failure reading file: /dev/null
>   $ echo $?
>   0
>
> Signed-off-by: Nick Kralevich <nnk@google.com>
> ---
>  secilc/secilc.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/secilc/secilc.c b/secilc/secilc.c
> index e1347205..ad6862ba 100644
> --- a/secilc/secilc.c
> +++ b/secilc/secilc.c
> @@ -257,6 +257,7 @@ int main(int argc, char *argv[])
>                 rc = stat(argv[i], &filedata);
>                 if (rc == -1) {
>                         fprintf(stderr, "Could not stat file: %s\n",
> argv[i]);
> +                       rc = SEPOL_ERR;
>                         goto exit;
>                 }
>                 file_size = filedata.st_size;
> @@ -265,6 +266,7 @@ int main(int argc, char *argv[])
>                 rc = fread(buffer, file_size, 1, file);
>                 if (rc != 1) {
>                         fprintf(stderr, "Failure reading file: %s\n",
> argv[i]);
> +                       rc = SEPOL_ERR;
>                         goto exit;
>                 }
>                 fclose(file);
> @@ -345,11 +347,13 @@ int main(int argc, char *argv[])
>
>         if (file_contexts == NULL) {
>                 fprintf(stderr, "Failed to open file_contexts file\n");
> +               rc = SEPOL_ERR;
>                 goto exit;
>         }
>
>         if (fwrite(fc_buf, sizeof(char), fc_size, file_contexts) !=
> fc_size) {
>                 fprintf(stderr, "Failed to write file_contexts file\n");
> +               rc = SEPOL_ERR;
>                 goto exit;
>         }
>
> --
> 2.19.0.444.g18242da7ef-goog
>
> _______________________________________________
> Selinux mailing list
> Selinux@tycho.nsa.gov
> To unsubscribe, send email to Selinux-leave@tycho.nsa.gov.
> To get help, send an email containing "help" to
> Selinux-request@tycho.nsa.gov.
>
<div dir="ltr">ack</div><br><div class="gmail_quote"><div dir="ltr">On Mon, Sep 24, 2018 at 11:12 AM Nick Kralevich via Selinux &lt;<a href="mailto:selinux@tycho.nsa.gov">selinux@tycho.nsa.gov</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Fix a situation where the secilc command line tool could return success<br>
even though the compilation failed.<br>
<br>
  $ secilc /dev/null -o /dev/null -f /dev/null<br>
  Failure reading file: /dev/null<br>
  $ echo $?<br>
  0<br>
<br>
Signed-off-by: Nick Kralevich &lt;<a href="mailto:nnk@google.com" target="_blank">nnk@google.com</a>&gt;<br>
---<br>
 secilc/secilc.c | 4 ++++<br>
 1 file changed, 4 insertions(+)<br>
<br>
diff --git a/secilc/secilc.c b/secilc/secilc.c<br>
index e1347205..ad6862ba 100644<br>
--- a/secilc/secilc.c<br>
+++ b/secilc/secilc.c<br>
@@ -257,6 +257,7 @@ int main(int argc, char *argv[])<br>
                rc = stat(argv[i], &amp;filedata);<br>
                if (rc == -1) {<br>
                        fprintf(stderr, &quot;Could not stat file: %s\n&quot;, argv[i]);<br>
+                       rc = SEPOL_ERR;<br>
                        goto exit;<br>
                }<br>
                file_size = filedata.st_size;<br>
@@ -265,6 +266,7 @@ int main(int argc, char *argv[])<br>
                rc = fread(buffer, file_size, 1, file);<br>
                if (rc != 1) {<br>
                        fprintf(stderr, &quot;Failure reading file: %s\n&quot;, argv[i]);<br>
+                       rc = SEPOL_ERR;<br>
                        goto exit;<br>
                }<br>
                fclose(file);<br>
@@ -345,11 +347,13 @@ int main(int argc, char *argv[])<br>
<br>
        if (file_contexts == NULL) {<br>
                fprintf(stderr, &quot;Failed to open file_contexts file\n&quot;);<br>
+               rc = SEPOL_ERR;<br>
                goto exit;<br>
        }<br>
<br>
        if (fwrite(fc_buf, sizeof(char), fc_size, file_contexts) != fc_size) {<br>
                fprintf(stderr, &quot;Failed to write file_contexts file\n&quot;);<br>
+               rc = SEPOL_ERR;<br>
                goto exit;<br>
        }<br>
<br>
-- <br>
2.19.0.444.g18242da7ef-goog<br>
<br>
_______________________________________________<br>
Selinux mailing list<br>
<a href="mailto:Selinux@tycho.nsa.gov" target="_blank">Selinux@tycho.nsa.gov</a><br>
To unsubscribe, send email to <a href="mailto:Selinux-leave@tycho.nsa.gov" target="_blank">Selinux-leave@tycho.nsa.gov</a>.<br>
To get help, send an email containing &quot;help&quot; to <a href="mailto:Selinux-request@tycho.nsa.gov" target="_blank">Selinux-request@tycho.nsa.gov</a>.<br>
</blockquote></div>
diff mbox series

Patch

diff --git a/secilc/secilc.c b/secilc/secilc.c
index e1347205..ad6862ba 100644
--- a/secilc/secilc.c
+++ b/secilc/secilc.c
@@ -257,6 +257,7 @@  int main(int argc, char *argv[])
 		rc = stat(argv[i], &filedata);
 		if (rc == -1) {
 			fprintf(stderr, "Could not stat file: %s\n", argv[i]);
+			rc = SEPOL_ERR;
 			goto exit;
 		}
 		file_size = filedata.st_size;
@@ -265,6 +266,7 @@  int main(int argc, char *argv[])
 		rc = fread(buffer, file_size, 1, file);
 		if (rc != 1) {
 			fprintf(stderr, "Failure reading file: %s\n", argv[i]);
+			rc = SEPOL_ERR;
 			goto exit;
 		}
 		fclose(file);
@@ -345,11 +347,13 @@  int main(int argc, char *argv[])
 
 	if (file_contexts == NULL) {
 		fprintf(stderr, "Failed to open file_contexts file\n");
+		rc = SEPOL_ERR;
 		goto exit;
 	}
 
 	if (fwrite(fc_buf, sizeof(char), fc_size, file_contexts) != fc_size) {
 		fprintf(stderr, "Failed to write file_contexts file\n");
+		rc = SEPOL_ERR;
 		goto exit;
 	}