Mercurial > trustbridge
annotate cinst/mozilla.c @ 249:6a7eb102716d
Remove code duplication by unifying the certificatelist.
You should now check for isInstallCert to determine wether this
certificate should be installed or removed.
Leaving the getInstallCertificates and getRemoveCertificates
in place for compatibilty would have been easier to keep the
tests stable.
author | Andre Heinecke <aheinecke@intevation.de> |
---|---|
date | Mon, 31 Mar 2014 08:06:17 +0000 |
parents | 1efe494c3d2b |
children | bd7fb50078b4 |
rev | line source |
---|---|
121
4bb5f295987b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
119
diff
changeset
|
1 /** |
4bb5f295987b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
119
diff
changeset
|
2 * @file |
4bb5f295987b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
119
diff
changeset
|
3 * @brief Mozilla installation process |
99
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
4 * |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
5 * Reads from stdin a list of instructions in the form: |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
6 * |
238
dd417a2ff9cd
Specifiy unspecified behavior if there is an install and
Andre Heinecke <aheinecke@intevation.de>
parents:
235
diff
changeset
|
7 * I:<base64 DER econded certificate> |
dd417a2ff9cd
Specifiy unspecified behavior if there is an install and
Andre Heinecke <aheinecke@intevation.de>
parents:
235
diff
changeset
|
8 * R:<base64 DER econded certificate> |
99
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
9 * ... |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
10 * |
238
dd417a2ff9cd
Specifiy unspecified behavior if there is an install and
Andre Heinecke <aheinecke@intevation.de>
parents:
235
diff
changeset
|
11 * With one instruction per line. the maximum size of an input |
dd417a2ff9cd
Specifiy unspecified behavior if there is an install and
Andre Heinecke <aheinecke@intevation.de>
parents:
235
diff
changeset
|
12 * line is 9999 characters (including the \r\n) at the end of the line. |
99
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
13 * |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
14 * Certificates marked with I: will be installed and the ones |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
15 * marked with R: will be searched and if available removed from |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
16 * the databases. |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
17 * |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
18 * This tool tries to find all NSS databases the user has |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
19 * access to and to execute the instructions on all of them. |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
20 * |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
21 * If there are other processes accessing the databases the caller |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
22 * has to ensure that those are terminated before this process is |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
23 * executed. |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
24 * |
238
dd417a2ff9cd
Specifiy unspecified behavior if there is an install and
Andre Heinecke <aheinecke@intevation.de>
parents:
235
diff
changeset
|
25 * If the same certificate is marked to be installed and to be removed |
dd417a2ff9cd
Specifiy unspecified behavior if there is an install and
Andre Heinecke <aheinecke@intevation.de>
parents:
235
diff
changeset
|
26 * in one call the behavior is undefined. This should be avoided and |
dd417a2ff9cd
Specifiy unspecified behavior if there is an install and
Andre Heinecke <aheinecke@intevation.de>
parents:
235
diff
changeset
|
27 * may lead to errors. |
dd417a2ff9cd
Specifiy unspecified behavior if there is an install and
Andre Heinecke <aheinecke@intevation.de>
parents:
235
diff
changeset
|
28 * |
99
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
29 * Returns 0 on success (Even when no stores where found) an error value |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
30 * as defined in errorcodes.h otherwise. |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
31 * |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
32 * Success messages are written to stdout. Errors to stderr. For logging |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
33 * purposes each installation / removal of a certificate will be reported |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
34 * with the profile name that it modified. |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
35 * |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
36 */ |
bc1e6732f43c
Add specification and some cleanups
Andre Heinecke <aheinecke@intevation.de>
parents:
44
diff
changeset
|
37 |
235
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
38 /** |
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
39 * @brief Needs to eb defined to get strnlen() |
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
40 */ |
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
41 #define _POSIX_C_SOURCE 200809L |
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
42 |
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
43 /* REMOVEME: */ |
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
44 #include <unistd.h> |
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
45 |
173
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
46 #include <dirent.h> |
224
689b94dd89a9
Wrote FindNSS to build against nss without pkg-config support (Windows).
Sascha Wilde <wilde@intevation.de>
parents:
223
diff
changeset
|
47 #include <cert.h> |
689b94dd89a9
Wrote FindNSS to build against nss without pkg-config support (Windows).
Sascha Wilde <wilde@intevation.de>
parents:
223
diff
changeset
|
48 #include <certt.h> |
689b94dd89a9
Wrote FindNSS to build against nss without pkg-config support (Windows).
Sascha Wilde <wilde@intevation.de>
parents:
223
diff
changeset
|
49 #include <nss.h> |
689b94dd89a9
Wrote FindNSS to build against nss without pkg-config support (Windows).
Sascha Wilde <wilde@intevation.de>
parents:
223
diff
changeset
|
50 #include <pk11pub.h> |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
51 #include <stdbool.h> |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
52 #include <stdio.h> |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
53 #include <stdlib.h> |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
54 #include <string.h> |
173
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
55 #include <sys/types.h> |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
56 |
230
92b1e5ed2d5f
Cleanup and documentation in debugging macros.
Sascha Wilde <wilde@intevation.de>
parents:
229
diff
changeset
|
57 #define DEBUGPREFIX "MOZ-" |
226
d7788db3bdde
Make locale includes distinguishable from system includes.
Sascha Wilde <wilde@intevation.de>
parents:
224
diff
changeset
|
58 #include "debug.h" |
230
92b1e5ed2d5f
Cleanup and documentation in debugging macros.
Sascha Wilde <wilde@intevation.de>
parents:
229
diff
changeset
|
59 |
226
d7788db3bdde
Make locale includes distinguishable from system includes.
Sascha Wilde <wilde@intevation.de>
parents:
224
diff
changeset
|
60 #include "errorcodes.h" |
d7788db3bdde
Make locale includes distinguishable from system includes.
Sascha Wilde <wilde@intevation.de>
parents:
224
diff
changeset
|
61 #include "portpath.h" |
d7788db3bdde
Make locale includes distinguishable from system includes.
Sascha Wilde <wilde@intevation.de>
parents:
224
diff
changeset
|
62 #include "strhelp.h" |
244
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
63 #include "nss-secitemlist.h" |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
64 |
113
02ad0922c01f
Start over (only leave comments).
Sascha Wilde <wilde@intevation.de>
parents:
110
diff
changeset
|
65 #ifndef _WIN32 |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
66 #define CONFDIRS ".mozilla", ".thunderbird" |
223
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
67 #define TARGET_LINUX 1 |
113
02ad0922c01f
Start over (only leave comments).
Sascha Wilde <wilde@intevation.de>
parents:
110
diff
changeset
|
68 #else |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
69 #define CONFDIRS "Mozilla", "Thunderbird" |
223
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
70 #define TARGET_LINUX 0 |
113
02ad0922c01f
Start over (only leave comments).
Sascha Wilde <wilde@intevation.de>
parents:
110
diff
changeset
|
71 #endif |
02ad0922c01f
Start over (only leave comments).
Sascha Wilde <wilde@intevation.de>
parents:
110
diff
changeset
|
72 |
229 | 73 /** |
74 * @brief Length of string buffers used | |
75 * | |
76 * The maximal length of input is defined as 9999 (+ terminating \0). | |
77 * We use it for other other input puffers besides the IPC input, too. | |
78 * (One size fits all). | |
79 */ | |
80 #define LINEBUFLEN 10000 | |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
81 |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
82 /** |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
83 * @brief Global Return Code |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
84 * |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
85 * This will be retuned by the programm and might be set to an |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
86 * error code on fatal errors and to and warning code on non-fatal |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
87 * errors. In case of mor than one warning the warning codes will be |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
88 * ORed together. |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
89 */ |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
90 int return_code = 0; |
44
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
91 |
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
92 /** |
194
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
93 * @brief Return configuration base directory. |
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
94 * @returns A pointer to a string containing the path to the base |
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
95 * directory holding the configuration directories for e.g. mozilla |
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
96 * and thunderbird. |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
97 */ |
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
98 static char * |
194
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
99 get_conf_basedir() |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
100 { |
194
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
101 char *cdir, *envvar; |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
102 |
223
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
103 if (TARGET_LINUX) |
194
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
104 envvar = "HOME" ; |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
105 else |
194
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
106 envvar = "APPDATA"; |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
107 |
194
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
108 if ((cdir = getenv(envvar)) != NULL) |
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
109 return cdir; |
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
110 else |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
111 { |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
112 DEBUGPRINTF("FATAL! No %s in environment.\n", envvar); |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
113 exit(ERR_MOZ_HOMELESS); |
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
114 } |
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
115 } |
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
116 |
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
117 /** |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
118 * @brief Get a list of all mozilla profile directories |
44
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
119 * |
232 | 120 * Parse the profiles.ini and extract all profile paths from that. |
121 * The expected data is in the form: | |
122 * | |
123 * [Profile99] | |
124 * IsRelative=1 | |
125 * Path=Example/fooo.bar | |
126 * | |
127 * or | |
128 * [Profile0] | |
129 * IsRelative=0 | |
130 * Path=c:\foo\bar\baz | |
131 * | |
132 * Mozilla also accepts the ini file on Windows even if it is UTF-16 | |
133 * encoded but never writes UTF-16 on its own. So currently we ignore | |
134 * this special case. | |
44
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
135 * |
121
4bb5f295987b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
119
diff
changeset
|
136 * @param[in] inifile_name path of the profile.ini to read. |
44
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
137 * @return NULL terminated array of strings containing containing the |
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
138 * absolute path of the profile directories. The array needs to |
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
139 * be freed by the caller. |
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
140 */ |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
141 static char ** |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
142 get_profile_dirs (char *inifile_name) |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
143 { |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
144 char **dirs = NULL; |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
145 char *inifile_dirname; |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
146 FILE *inifile; |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
147 char line[LINEBUFLEN]; |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
148 char *key; |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
149 char *value; |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
150 char path[LINEBUFLEN]; |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
151 char *fqpath; |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
152 bool inprofile = false; |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
153 bool relative_path = false; |
44
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
154 |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
155 if ((inifile = fopen(inifile_name, "r")) != NULL) |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
156 { |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
157 DEBUGPRINTF("Searching for profile paths in: '%s'\n", inifile_name); |
175
6fa0e12ae1d2
Added more debug output.
Sascha Wilde <wilde@intevation.de>
parents:
174
diff
changeset
|
158 |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
159 inifile_dirname = port_dirname(inifile_name); |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
160 while (fgets(line, LINEBUFLEN, inifile) != NULL) |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
161 { |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
162 /* Determine if we are in an profile section */ |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
163 if (str_starts_with(line, "[Profile")) |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
164 { |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
165 relative_path = false; |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
166 inprofile = true; |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
167 } |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
168 else if (line[0] == '[') |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
169 inprofile = false; |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
170 |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
171 /* If we are in a profile parse path related stuff */ |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
172 if (inprofile) |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
173 { |
157
a46a4b443410
Use strtok instead of strsep for portability.
Sascha Wilde <wilde@intevation.de>
parents:
147
diff
changeset
|
174 key = strtok(line, "="); |
a46a4b443410
Use strtok instead of strsep for portability.
Sascha Wilde <wilde@intevation.de>
parents:
147
diff
changeset
|
175 value = strtok(NULL, "="); |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
176 str_trim(&value); |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
177 if (str_equal(key, "Path")) |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
178 { |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
179 if (relative_path) |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
180 snprintf(path, LINEBUFLEN, "%s/%s", inifile_dirname, value); |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
181 else |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
182 strncpy(path, value, LINEBUFLEN); |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
183 if ((fqpath = port_realpath(path)) != NULL) |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
184 { |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
185 DEBUGPRINTF("Found profile path: '%s'\n", fqpath); |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
186 strv_append(&dirs, fqpath, strlen(fqpath)); |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
187 free (fqpath); |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
188 } |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
189 else |
175
6fa0e12ae1d2
Added more debug output.
Sascha Wilde <wilde@intevation.de>
parents:
174
diff
changeset
|
190 { |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
191 DEBUGPRINTF("WARN! Non existent profile path: '%s'\n", path); |
175
6fa0e12ae1d2
Added more debug output.
Sascha Wilde <wilde@intevation.de>
parents:
174
diff
changeset
|
192 return_code |= WARN_MOZ_PROFILE_DOES_NOT_EXIST; |
6fa0e12ae1d2
Added more debug output.
Sascha Wilde <wilde@intevation.de>
parents:
174
diff
changeset
|
193 } |
147
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
194 } |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
195 else if (str_equal(key, "IsRelative") && |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
196 str_starts_with(value, "1")) |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
197 relative_path = true; |
fc9af77b06b9
Completed profile.ini parser.
Sascha Wilde <wilde@intevation.de>
parents:
130
diff
changeset
|
198 } |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
199 } |
179
8fafd0fc2173
get_profile_dirs(): close filedescriptor again. (found by cppcheck)
Bernhard Reiter <bernhard@intevation.de>
parents:
177
diff
changeset
|
200 fclose(inifile); |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
201 } |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
202 else |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
203 { |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
204 DEBUGPRINTF("WARN! Could not open ini file: '%s'\n", inifile_name); |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
205 return_code |= WARN_MOZ_FAILED_TO_OPEN_INI; |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
206 } |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
207 return dirs; |
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
208 } |
44
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
209 |
173
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
210 /** |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
211 * @brief Search for mozilla profiles.ini files |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
212 * |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
213 * Use well known paths and heuristics to find the current users |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
214 * profiles.ini files on GNU/Linux and Windows systems. |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
215 * |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
216 * @return NULL terminated array of strings containing the absolute |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
217 * path of the profiles.ini files. The array needs to be freed by the |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
218 * caller. |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
219 */ |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
220 static char ** |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
221 get_profile_inis () |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
222 { |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
223 char **inis = NULL; |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
224 char path[LINEBUFLEN]; |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
225 char *fqpath; |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
226 DIR *mozdir; |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
227 struct dirent *mozdirent; |
194
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
228 char *confbase = get_conf_basedir(); |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
229 const char *confdirs[] = { CONFDIRS, NULL }; |
173
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
230 |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
231 for (int i=0; confdirs[i] != NULL; i++) |
173
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
232 { |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
233 snprintf(path, LINEBUFLEN, "%s/%s", |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
234 confbase, |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
235 confdirs[i]); |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
236 if ((mozdir = opendir(path)) != NULL) |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
237 { |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
238 while ((mozdirent = readdir(mozdir)) != NULL) |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
239 { |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
240 snprintf(path, LINEBUFLEN, "%s/%s/%s", |
194
d4e97c9b199f
Use %APPDATA% as config bse dir on windows. Much simpler.
Sascha Wilde <wilde@intevation.de>
parents:
181
diff
changeset
|
241 confbase, |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
242 confdirs[i], |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
243 mozdirent->d_name); |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
244 if (port_isdir(path) |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
245 && (strcmp(mozdirent->d_name, "..") != 0)) |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
246 { |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
247 snprintf(path, LINEBUFLEN, "%s/%s/%s/%s", |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
248 confbase, |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
249 confdirs[i], |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
250 mozdirent->d_name, |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
251 "profiles.ini"); |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
252 DEBUGPRINTF("checking for %s...\n", path); |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
253 if ((fqpath = port_realpath(path)) != NULL) |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
254 { |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
255 strv_append(&inis, fqpath, strlen(fqpath)); |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
256 DEBUGPRINTF("Found mozilla ini file: '%s'\n", fqpath); |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
257 free(fqpath); |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
258 } |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
259 } |
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
260 } |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
261 closedir(mozdir); |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
262 } |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
263 else |
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
264 { |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
265 DEBUGPRINTF("Could not open %s/%s\n", confbase, confdirs[i]); |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
266 } |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
267 } |
197
5d380b662198
Search for thunderbird profiles, too.
Sascha Wilde <wilde@intevation.de>
parents:
195
diff
changeset
|
268 if (inis == NULL) |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
269 { |
228
19de529ce7fb
Moved debug prefix to macro and added component specific prefix.
Sascha Wilde <wilde@intevation.de>
parents:
227
diff
changeset
|
270 DEBUGPRINTF("No ini files found - will do nothing!\n"); |
180
344b8a79ad2e
Implemented detection profile paths for Windows Vista/7.
Sascha Wilde <wilde@intevation.de>
parents:
177
diff
changeset
|
271 exit(WARN_MOZ_NO_PROFILES); |
173
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
272 } |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
273 return inis; |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
274 } |
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
275 |
223
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
276 /** |
231 | 277 * @brief Collect all mozilla profile directories of current user. |
278 * @return NULL terminated array of strings containing the absolute | |
279 * path of the profile directories. The array needs to be freed by the | |
280 * caller. | |
281 */ | |
282 static char** | |
283 get_all_profile_dirs() | |
284 { | |
285 char **mozinis, **pdirs; | |
286 char **alldirs = NULL; | |
287 if ((mozinis = get_profile_inis()) != NULL) | |
288 { | |
289 for (int i=0; mozinis[i] != NULL; i++) | |
290 { | |
291 pdirs = | |
292 get_profile_dirs(mozinis[i]); | |
293 if (pdirs != NULL) | |
294 { | |
295 for (int i=0; pdirs[i] != NULL; i++) | |
296 { | |
297 strv_append(&alldirs, pdirs[i], strlen(pdirs[i])); | |
298 } | |
299 strv_free(pdirs); | |
300 } | |
301 } | |
302 strv_free(mozinis); | |
303 } | |
304 return alldirs; | |
305 } | |
306 | |
307 /** | |
223
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
308 * @brief list certificates from nss certificate store |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
309 * @param[in] confdir the directory with the certificate store |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
310 */ |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
311 static void |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
312 nss_list_certs (char *confdir) |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
313 { |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
314 CERTCertList *list; |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
315 CERTCertListNode *node; |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
316 char *name; |
224
689b94dd89a9
Wrote FindNSS to build against nss without pkg-config support (Windows).
Sascha Wilde <wilde@intevation.de>
parents:
223
diff
changeset
|
317 |
223
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
318 if (NSS_Initialize(confdir, "", "", "secmod.db", NSS_INIT_READONLY) |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
319 == SECSuccess) |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
320 { |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
321 list = PK11_ListCerts(PK11CertListAll, NULL); |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
322 for (node = CERT_LIST_HEAD(list); !CERT_LIST_END(node, list); |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
323 node = CERT_LIST_NEXT(node)) { |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
324 name = node->appData; |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
325 |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
326 printf ("Found certificate \"%s\"\n", name); |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
327 } |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
328 CERT_DestroyCertList(list); |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
329 NSS_Shutdown(); |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
330 } |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
331 else |
227
29467940b07b
Fixed naming of debugging print macro.
Sascha Wilde <wilde@intevation.de>
parents:
226
diff
changeset
|
332 DEBUGPRINTF("Could not open nss cer store in %s!", confdir); |
223
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
333 } |
d29997e09177
NSS first Blood. Added code to list certs in found stores.
Sascha Wilde <wilde@intevation.de>
parents:
197
diff
changeset
|
334 |
244
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
335 static bool |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
336 base64_to_secitem(char *b64, size_t b64len, SECItem *secitem) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
337 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
338 unsigned char *dercert = NULL; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
339 size_t dercertlen; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
340 |
245
fbd74e2370de
Error out, when base64 decode results in empty data.
Sascha Wilde <wilde@intevation.de>
parents:
244
diff
changeset
|
341 if ((str_base64_decode((char **)(&dercert), &dercertlen, |
fbd74e2370de
Error out, when base64 decode results in empty data.
Sascha Wilde <wilde@intevation.de>
parents:
244
diff
changeset
|
342 b64, b64len) == 0) && |
fbd74e2370de
Error out, when base64 decode results in empty data.
Sascha Wilde <wilde@intevation.de>
parents:
244
diff
changeset
|
343 (dercertlen > 0)) |
244
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
344 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
345 secitem->data = dercert; |
246
1efe494c3d2b
Explicit tyoe cast to fix warning on 64bit Jessie.
Sascha Wilde <wilde@intevation.de>
parents:
245
diff
changeset
|
346 secitem->len = (unsigned int) dercertlen; |
244
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
347 return true; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
348 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
349 else |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
350 DEBUGPRINTF("Base64 decode failed for: %s\n", b64); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
351 return false; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
352 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
353 |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
354 /** |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
355 * @brief Parse IPC commands from standard input. |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
356 * |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
357 * Reads command lines (R: and I:) from standard input and puts the |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
358 * certificates to process in two SECItem lists holding the |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
359 * certificates in DER format. |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
360 * @param[inout] install_list list of SECItems with certifiactes to install |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
361 * @param[inout] remove_list list of SECItems with certifiactes to remove |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
362 */ |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
363 static void |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
364 parse_commands (seciteml_t **install_list, seciteml_t **remove_list) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
365 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
366 char inpl[LINEBUFLEN]; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
367 size_t inpllen; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
368 bool parserr = true; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
369 SECItem secitem; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
370 |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
371 while ( fgets(inpl, LINEBUFLEN, stdin) != NULL ) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
372 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
373 inpllen = strnlen(inpl, LINEBUFLEN); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
374 /* Validate input line: |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
375 * - must be (much) longer than 3 characters |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
376 * - must start with "*:" |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
377 */ |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
378 if ((inpllen > 3) && (inpl[1] == ':')) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
379 /* Now parse Input */ |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
380 switch(inpl[0]) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
381 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
382 case 'R': |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
383 parserr = true; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
384 DEBUGPRINTF("Request to remove certificate: %s\n", &inpl[2]); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
385 if (base64_to_secitem(&inpl[2], inpllen - 2, &secitem)) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
386 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
387 seciteml_push(remove_list, &secitem); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
388 parserr = false; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
389 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
390 break; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
391 case 'I': |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
392 parserr = true; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
393 DEBUGPRINTF("Request to install certificate: %s\n", &inpl[2]); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
394 if (base64_to_secitem(&inpl[2], inpllen - 2, &secitem)) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
395 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
396 seciteml_push(install_list, &secitem); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
397 parserr = false; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
398 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
399 break; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
400 default: |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
401 parserr = true; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
402 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
403 else |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
404 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
405 parserr = true; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
406 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
407 |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
408 if (parserr) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
409 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
410 DEBUGPRINTF("FATAL: Invalid input: %s\n", inpl); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
411 exit(ERR_MOZ_INVALID_INPUT); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
412 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
413 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
414 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
415 |
173
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
416 |
113
02ad0922c01f
Start over (only leave comments).
Sascha Wilde <wilde@intevation.de>
parents:
110
diff
changeset
|
417 int |
173
a9e4454dee97
Implemented searching $HOME/.mozilla for profiles.ini on Linux.
Sascha Wilde <wilde@intevation.de>
parents:
157
diff
changeset
|
418 main () |
113
02ad0922c01f
Start over (only leave comments).
Sascha Wilde <wilde@intevation.de>
parents:
110
diff
changeset
|
419 { |
231 | 420 char **pdirs; |
244
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
421 seciteml_t *certs_to_remove = NULL; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
422 seciteml_t *certs_to_add = NULL; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
423 SECItem *secitemp; |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
424 |
231 | 425 pdirs = |
426 get_all_profile_dirs(); | |
235
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
427 |
231 | 428 if (pdirs != NULL) |
429 { | |
244
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
430 parse_commands(&certs_to_add, &certs_to_remove); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
431 |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
432 while ((secitemp = seciteml_pop(&certs_to_remove)) != NULL) |
235
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
433 { |
244
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
434 fprintf(stderr,"CERT TO REMOVE :'"); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
435 write(2, secitemp->data, secitemp->len); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
436 fprintf(stderr,"'\n"); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
437 free(secitemp->data); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
438 free(secitemp); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
439 } |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
440 while ((secitemp = seciteml_pop(&certs_to_add)) != NULL) |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
441 { |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
442 fprintf(stderr,"CERT TO ADD :'"); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
443 write(2, secitemp->data, secitemp->len); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
444 fprintf(stderr,"'\n"); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
445 free(secitemp->data); |
0145d2401f46
Input parser works. Added debug output for collected cert data.
Sascha Wilde <wilde@intevation.de>
parents:
243
diff
changeset
|
446 free(secitemp); |
235
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
447 } |
0c4d65a7cd14
Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents:
232
diff
changeset
|
448 |
231 | 449 for (int i=0; pdirs[i] != NULL; i++) |
450 { | |
451 puts(pdirs[i]); | |
452 nss_list_certs(pdirs[i]); | |
453 } | |
454 strv_free(pdirs); | |
455 } | |
119
24ca8e2ceecf
First step of simple mozilla ini parser
Sascha Wilde <wilde@intevation.de>
parents:
113
diff
changeset
|
456 exit(return_code); |
44
b3e8e047bc2c
Commit first scratch of mozilla installer
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
457 } |