@@ -127,8 +127,6 @@ static int pemApp_ReadFile(FILE* fp, unsigned char** pdata, word32* plen)
127127 /* Set data to new pointer. */
128128 data = p ;
129129 }
130- /* Done with file. */
131- fclose (fp );
132130 }
133131
134132 if (data != NULL ) {
@@ -161,8 +159,6 @@ static int WriteFile(FILE* fp, const char* data, word32 len)
161159 fprintf (stderr , "Failed to write\n" );
162160 ret = 1 ;
163161 }
164- /* Close file. */
165- fclose (fp );
166162
167163 return ret ;
168164}
@@ -766,7 +762,8 @@ int main(int argc, char* argv[])
766762 argv ++ ;
767763 if (argc == 0 ) {
768764 fprintf (stderr , "No type string provided\n" );
769- return 1 ;
765+ ret = 1 ;
766+ goto out ;
770767 }
771768 type_str = argv [0 ];
772769 }
@@ -776,16 +773,19 @@ int main(int argc, char* argv[])
776773 argv ++ ;
777774 if (argc == 0 ) {
778775 fprintf (stderr , "No filename provided\n" );
779- return 1 ;
776+ ret = 1 ;
777+ goto out ;
780778 }
781779 if (in_file != stdin ) {
782780 fprintf (stderr , "At most one input file can be supplied.\n" );
783- return 1 ;
781+ ret = 1 ;
782+ goto out ;
784783 }
785784 in_file = fopen (argv [0 ], "r" );
786785 if (in_file == NULL ) {
787786 fprintf (stderr , "File not able to be read: %s\n" , argv [0 ]);
788- return 1 ;
787+ ret = 1 ;
788+ goto out ;
789789 }
790790 }
791791 /* Name of output file. */
@@ -794,7 +794,8 @@ int main(int argc, char* argv[])
794794 argv ++ ;
795795 if (argc == 0 ) {
796796 fprintf (stderr , "No filename provided\n" );
797- return 1 ;
797+ ret = 1 ;
798+ goto out ;
798799 }
799800 out_name = argv [0 ];
800801 }
@@ -805,7 +806,8 @@ int main(int argc, char* argv[])
805806 argv ++ ;
806807 if (argc == 0 ) {
807808 fprintf (stderr , "No filename provided\n" );
808- return 1 ;
809+ ret = 1 ;
810+ goto out ;
809811 }
810812 offset = (word32 )strtoul (argv [0 ], NULL , 10 );
811813 }
@@ -817,7 +819,8 @@ int main(int argc, char* argv[])
817819 argv ++ ;
818820 if (argc == 0 ) {
819821 fprintf (stderr , "No password provided\n" );
820- return 1 ;
822+ ret = 1 ;
823+ goto out ;
821824 }
822825 info .passwd_cb = password_from_userdata ;
823826 info .passwd_userdata = argv [0 ];
@@ -846,10 +849,12 @@ int main(int argc, char* argv[])
846849 argv ++ ;
847850 if (argc == 0 ) {
848851 fprintf (stderr , "No PBE version provided\n" );
849- return 1 ;
852+ ret = 1 ;
853+ goto out ;
850854 }
851855 if (StringToPbeVer (argv [0 ], & pbe_ver ) != 0 ) {
852- return 1 ;
856+ ret = 1 ;
857+ goto out ;
853858 }
854859 }
855860 /* PBE algorithm. */
@@ -859,10 +864,12 @@ int main(int argc, char* argv[])
859864 argv ++ ;
860865 if (argc == 0 ) {
861866 fprintf (stderr , "No PBE provided\n" );
862- return 1 ;
867+ ret = 1 ;
868+ goto out ;
863869 }
864870 if (StringToPbe (argv [0 ], & pbe ) != 0 ) {
865- return 1 ;
871+ ret = 1 ;
872+ goto out ;
866873 }
867874 }
868875 /* PBES2 algorithm. */
@@ -872,10 +879,12 @@ int main(int argc, char* argv[])
872879 argv ++ ;
873880 if (argc == 0 ) {
874881 fprintf (stderr , "No PBE algorithm provided\n" );
875- return 1 ;
882+ ret = 1 ;
883+ goto out ;
876884 }
877885 if (StringToPbeAlg (argv [0 ], & pbe_alg ) != 0 ) {
878- return 1 ;
886+ ret = 1 ;
887+ goto out ;
879888 }
880889 }
881890 /* Number of PBE iterations. */
@@ -885,7 +894,8 @@ int main(int argc, char* argv[])
885894 argv ++ ;
886895 if (argc == 0 ) {
887896 fprintf (stderr , "No filename provided\n" );
888- return 1 ;
897+ ret = 1 ;
898+ goto out ;
889899 }
890900 iterations = (unsigned int )strtoul (argv [0 ], NULL , 10 );
891901 }
@@ -896,13 +906,15 @@ int main(int argc, char* argv[])
896906 argv ++ ;
897907 if (argc == 0 ) {
898908 fprintf (stderr , "No salt size provided\n" );
899- return 1 ;
909+ ret = 1 ;
910+ goto out ;
900911 }
901912 salt_sz = (unsigned int )strtoul (argv [0 ], NULL , 10 );
902913 if (salt_sz > SALT_MAX_LEN ) {
903914 fprintf (stderr , "Salt size must be no bigger than %d: %d\n" ,
904915 SALT_MAX_LEN , salt_sz );
905- return 1 ;
916+ ret = 1 ;
917+ goto out ;
906918 }
907919 }
908920#endif /* WOLFSSL_ENCRYPTED_KEYS !NO_PWDBASED */
@@ -918,12 +930,14 @@ int main(int argc, char* argv[])
918930 else if ((strcmp (argv [0 ], "- ?") == 0 ) ||
919931 (strcmp (argv [0 ], "-- help ") == 0 )) {
920932 Usage ();
921- return 0 ;
933+ ret = 0 ;
934+ goto out ;
922935 }
923936 else {
924937 fprintf (stderr , "Bad option: %s\n" , argv [0 ]);
925938 Usage ();
926- return 1 ;
939+ ret = 1 ;
940+ goto out ;
927941 }
928942
929943 /* Move on to next command line argument. */
@@ -1005,6 +1019,7 @@ int main(int argc, char* argv[])
10051019 }
10061020 }
10071021
1022+ out :
10081023 /* Dispose of allocated data. */
10091024 if (der != NULL ) {
10101025 wc_FreeDer (& der );
@@ -1025,10 +1040,10 @@ int main(int argc, char* argv[])
10251040 fprintf (stderr , "%s\n" , wc_GetErrorString (ret ));
10261041 }
10271042
1028- if (in_file != stdin )
1043+ if (( in_file != stdin ) && ( in_file != NULL ) )
10291044 (void )fclose (in_file );
10301045
1031- if (out_file != stdout )
1046+ if (( out_file != stdout ) && ( out_file != NULL ) )
10321047 (void )fclose (out_file );
10331048
10341049 return (ret == 0 ) ? 0 : 1 ;
0 commit comments