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
e99e39d72af2 Adjusted LINEBUFLEN.
Sascha Wilde <wilde@intevation.de>
parents: 228
diff changeset
73 /**
e99e39d72af2 Adjusted LINEBUFLEN.
Sascha Wilde <wilde@intevation.de>
parents: 228
diff changeset
74 * @brief Length of string buffers used
e99e39d72af2 Adjusted LINEBUFLEN.
Sascha Wilde <wilde@intevation.de>
parents: 228
diff changeset
75 *
e99e39d72af2 Adjusted LINEBUFLEN.
Sascha Wilde <wilde@intevation.de>
parents: 228
diff changeset
76 * The maximal length of input is defined as 9999 (+ terminating \0).
e99e39d72af2 Adjusted LINEBUFLEN.
Sascha Wilde <wilde@intevation.de>
parents: 228
diff changeset
77 * We use it for other other input puffers besides the IPC input, too.
e99e39d72af2 Adjusted LINEBUFLEN.
Sascha Wilde <wilde@intevation.de>
parents: 228
diff changeset
78 * (One size fits all).
e99e39d72af2 Adjusted LINEBUFLEN.
Sascha Wilde <wilde@intevation.de>
parents: 228
diff changeset
79 */
e99e39d72af2 Adjusted LINEBUFLEN.
Sascha Wilde <wilde@intevation.de>
parents: 228
diff changeset
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
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
120 * Parse the profiles.ini and extract all profile paths from that.
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
121 * The expected data is in the form:
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
122 *
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
123 * [Profile99]
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
124 * IsRelative=1
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
125 * Path=Example/fooo.bar
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
126 *
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
127 * or
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
128 * [Profile0]
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
129 * IsRelative=0
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
130 * Path=c:\foo\bar\baz
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
131 *
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
132 * Mozilla also accepts the ini file on Windows even if it is UTF-16
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
133 * encoded but never writes UTF-16 on its own. So currently we ignore
774e944c395b Cleand up doku.
Sascha Wilde <wilde@intevation.de>
parents: 231
diff changeset
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
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
277 * @brief Collect all mozilla profile directories of current user.
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
278 * @return NULL terminated array of strings containing the absolute
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
279 * path of the profile directories. The array needs to be freed by the
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
280 * caller.
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
281 */
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
282 static char**
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
283 get_all_profile_dirs()
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
284 {
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
285 char **mozinis, **pdirs;
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
286 char **alldirs = NULL;
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
287 if ((mozinis = get_profile_inis()) != NULL)
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
288 {
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
289 for (int i=0; mozinis[i] != NULL; i++)
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
290 {
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
291 pdirs =
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
292 get_profile_dirs(mozinis[i]);
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
293 if (pdirs != NULL)
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
294 {
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
295 for (int i=0; pdirs[i] != NULL; i++)
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
296 {
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
297 strv_append(&alldirs, pdirs[i], strlen(pdirs[i]));
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
298 }
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
299 strv_free(pdirs);
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
300 }
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
301 }
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
302 strv_free(mozinis);
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
303 }
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
304 return alldirs;
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
305 }
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
306
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
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
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
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
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
425 pdirs =
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
426 get_all_profile_dirs();
235
0c4d65a7cd14 Started to write input parser.
Sascha Wilde <wilde@intevation.de>
parents: 232
diff changeset
427
231
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
428 if (pdirs != NULL)
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
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
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
449 for (int i=0; pdirs[i] != NULL; i++)
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
450 {
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
451 puts(pdirs[i]);
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
452 nss_list_certs(pdirs[i]);
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
453 }
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
454 strv_free(pdirs);
c342b93c5bd1 Refactoring.
Sascha Wilde <wilde@intevation.de>
parents: 230
diff changeset
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 }

http://wald.intevation.org/projects/trustbridge/