aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/directive.c8
-rw-r--r--src/getopt.m42
-rw-r--r--src/gpg.c14
-rw-r--r--src/process.c2
-rw-r--r--src/triplet.c16
-rw-r--r--src/verify.c11
-rw-r--r--src/wydawca.h28
7 files changed, 47 insertions, 34 deletions
diff --git a/src/directive.c b/src/directive.c
index 401397d..93830b1 100644
--- a/src/directive.c
+++ b/src/directive.c
@@ -584,20 +584,22 @@ external_check (struct file_triplet *trp)
584 notify (spool->notification, trp, ev_check_fail); 584 notify (spool->notification, trp, ev_check_fail);
585 } 585 }
586 586
587 return rc; 587 return rc;
588} 588}
589 589
590/* Process the directives from TRP, using given SPOOL */ 590/* Process the directives from TRP */
591int 591int
592process_directives (struct file_triplet *trp, const struct spool *spool) 592process_directives (struct file_triplet *trp)
593{ 593{
594 int rc, n; 594 int rc, n;
595 const char *key, *val; 595 const char *key, *val;
596 char *relative_dir; 596 char *relative_dir;
597 const struct spool *spool;
597 598
599 ASGN_SPOOL (spool, trp, return 1);
598 UPDATE_STATS (STAT_COMPLETE_TRIPLETS); 600 UPDATE_STATS (STAT_COMPLETE_TRIPLETS);
599 timer_start ("triplet"); 601 timer_start ("triplet");
600 report_init (); 602 report_init ();
601 for (n = directive_first (trp, &key, &val); n; 603 for (n = directive_first (trp, &key, &val); n;
602 n = directive_next (trp, n, &key, &val)) 604 n = directive_next (trp, n, &key, &val))
603 { 605 {
@@ -622,13 +624,13 @@ process_directives (struct file_triplet *trp, const struct spool *spool)
622 trp->file[file_directive].name, val); 624 trp->file[file_directive].name, val);
623 return 1; 625 return 1;
624 } 626 }
625 break; 627 break;
626 628
627 case filename_dir: 629 case filename_dir:
628 rc = verify_detached_signature (trp, spool); 630 rc = verify_detached_signature (trp);
629 if (rc == 0) 631 if (rc == 0)
630 { 632 {
631 if (external_check (trp)) 633 if (external_check (trp))
632 return 1; 634 return 1;
633 if (move_file (trp, spool, file_dist, relative_dir) 635 if (move_file (trp, spool, file_dist, relative_dir)
634 || move_file (trp, spool, file_signature, relative_dir)) 636 || move_file (trp, spool, file_signature, relative_dir))
diff --git a/src/getopt.m4 b/src/getopt.m4
index b615ec3..fc50ff9 100644
--- a/src/getopt.m4
+++ b/src/getopt.m4
@@ -243,13 +243,13 @@ void
243print_help(void) 243print_help(void)
244{ 244{
245 unsigned i; 245 unsigned i;
246 246
247 printf ("%s %s [%s]... %s\n", _("Usage:"), [<$2>], _("[<OPTION>]"), 247 printf ("%s %s [%s]... %s\n", _("Usage:"), [<$2>], _("[<OPTION>]"),
248 gettext (args_doc)); 248 gettext (args_doc));
249 if (doc && doc[0]) 249 if (doc[0])
250 print_option_descr(gettext (doc), 0, RMARGIN); 250 print_option_descr(gettext (doc), 0, RMARGIN);
251 putchar ('\n'); 251 putchar ('\n');
252 252
253 for (i = 0; i < sizeof (opthelp) / sizeof (opthelp[0]); i++) 253 for (i = 0; i < sizeof (opthelp) / sizeof (opthelp[0]); i++)
254 { 254 {
255 unsigned n; 255 unsigned n;
diff --git a/src/gpg.c b/src/gpg.c
index cca5048..979d0c0 100644
--- a/src/gpg.c
+++ b/src/gpg.c
@@ -212,23 +212,21 @@ gpg_verify_signature (gpgme_ctx_t ctx, gpgme_signature_t sig,
212 } 212 }
213 } 213 }
214 return 1; 214 return 1;
215} 215}
216 216
217/* Verify the directive file from TRP using public key PUBKEY */ 217/* Verify the directive file from TRP using public key PUBKEY */
218/* FIXME: spool currently unused */
219int 218int
220verify_directive_signature (struct file_triplet *trp, 219verify_directive_signature (struct file_triplet *trp)
221 const struct spool *spool)
222{ 220{
223 gpgme_ctx_t ctx; 221 gpgme_ctx_t ctx;
224 gpgme_data_t key_data, directive_data, plain; 222 gpgme_data_t key_data, directive_data, plain;
225 gpgme_error_t ec; 223 gpgme_error_t ec;
226 int rc; 224 int rc;
227 struct uploader_info *uptr; 225 struct uploader_info *uptr;
228 226
229 create_gpg_homedir (); 227 create_gpg_homedir ();
230 fail_if_err (gpgme_new (&ctx)); 228 fail_if_err (gpgme_new (&ctx));
231 229
232 for (uptr = trp->uploader_list; uptr; uptr = uptr->next) 230 for (uptr = trp->uploader_list; uptr; uptr = uptr->next)
233 { 231 {
234 gpgme_import_result_t res; 232 gpgme_import_result_t res;
@@ -256,13 +254,13 @@ verify_directive_signature (struct file_triplet *trp,
256 gpgme_verify_result_t result; 254 gpgme_verify_result_t result;
257 255
258 result = gpgme_op_verify_result (ctx); 256 result = gpgme_op_verify_result (ctx);
259 if (!gpg_verify_signature (ctx, result->signatures, trp)) 257 if (!gpg_verify_signature (ctx, result->signatures, trp))
260 { 258 {
261 UPDATE_STATS (STAT_BAD_SIGNATURE); 259 UPDATE_STATS (STAT_BAD_SIGNATURE);
262 notify (spool->notification, trp, ev_bad_directive_signature); 260 notify (trp->spool->notification, trp, ev_bad_directive_signature);
263 rc = 1; 261 rc = 1;
264 } 262 }
265 else 263 else
266 rc = 0; 264 rc = 0;
267 } 265 }
268 else 266 else
@@ -280,18 +278,20 @@ verify_directive_signature (struct file_triplet *trp,
280} 278}
281 279
282/* Verify the detached signature of TRP. 280/* Verify the detached signature of TRP.
283 NOTE: It is assumed that the public key is already registered (by 281 NOTE: It is assumed that the public key is already registered (by
284 a previous call to verify_directive_signature). */ 282 a previous call to verify_directive_signature). */
285int 283int
286verify_detached_signature (struct file_triplet *trp, 284verify_detached_signature (struct file_triplet *trp)
287 const struct spool *spool)
288{ 285{
289 gpgme_engine_info_t info; 286 gpgme_engine_info_t info;
290 const char *argv[5]; 287 const char *argv[5];
288 const struct spool *spool;
291 289
290 ASGN_SPOOL (spool, trp, return 1);
291
292 fail_if_err (gpgme_get_engine_info (&info)); 292 fail_if_err (gpgme_get_engine_info (&info));
293 while (info && info->protocol != GPGME_PROTOCOL_OpenPGP) 293 while (info && info->protocol != GPGME_PROTOCOL_OpenPGP)
294 info = info->next; 294 info = info->next;
295 if (!info) 295 if (!info)
296 { 296 {
297 logmsg (LOG_CRIT, 297 logmsg (LOG_CRIT,
diff --git a/src/process.c b/src/process.c
index 23641cd..676e565 100644
--- a/src/process.c
+++ b/src/process.c
@@ -199,13 +199,13 @@ scan_spool_unlocked (const struct spool *spool, int uc, uid_t *uv)
199 parse_file_name (ent->d_name, &finfo); 199 parse_file_name (ent->d_name, &finfo);
200 200
201 if (debug_level) 201 if (debug_level)
202 logmsg (LOG_DEBUG, _("found file %s: %s, stem: %.*s"), ent->d_name, 202 logmsg (LOG_DEBUG, _("found file %s: %s, stem: %.*s"), ent->d_name,
203 file_type_str (finfo.type), finfo.root_len, finfo.name); 203 file_type_str (finfo.type), finfo.root_len, finfo.name);
204 204
205 register_file (&finfo); 205 register_file (&finfo, spool);
206 } 206 }
207 207
208 closedir (dir); 208 closedir (dir);
209 209
210 if (count_collected_triplets () > 0) 210 if (count_collected_triplets () > 0)
211 { 211 {
diff --git a/src/triplet.c b/src/triplet.c
index 0744daa..efe4a0b 100644
--- a/src/triplet.c
+++ b/src/triplet.c
@@ -57,22 +57,23 @@ hash_triplet_free (void *data)
57 57
58 free (tp); 58 free (tp);
59} 59}
60 60
61/* Register a file in the triplet table */ 61/* Register a file in the triplet table */
62void 62void
63register_file (struct file_info *finfo) 63register_file (struct file_info *finfo, const struct spool *spool)
64{ 64{
65 struct file_triplet *tp, *ret; 65 struct file_triplet *tp, *ret;
66 66
67 tp = xmalloc (sizeof(*tp) + finfo->root_len + 1); 67 tp = xmalloc (sizeof(*tp) + finfo->root_len + 1);
68 memset (tp, 0, sizeof (*tp)); 68 memset (tp, 0, sizeof (*tp));
69 tp->name = (char*)(tp + 1); 69 tp->name = (char*)(tp + 1);
70 memcpy (tp->name, finfo->name, finfo->root_len); 70 memcpy (tp->name, finfo->name, finfo->root_len);
71 tp->name[finfo->root_len] = 0; 71 tp->name[finfo->root_len] = 0;
72 72 tp->spool = spool;
73
73 if (! ((triplet_table 74 if (! ((triplet_table
74 || (triplet_table = hash_initialize (0, 0, 75 || (triplet_table = hash_initialize (0, 0,
75 hash_triplet_hasher, 76 hash_triplet_hasher,
76 hash_triplet_compare, 77 hash_triplet_compare,
77 hash_triplet_free))) 78 hash_triplet_free)))
78 && (ret = hash_insert (triplet_table, tp)))) 79 && (ret = hash_insert (triplet_table, tp))))
@@ -120,13 +121,13 @@ enum triplet_state
120 121
121static enum triplet_state 122static enum triplet_state
122check_triplet_state (struct file_triplet *trp) 123check_triplet_state (struct file_triplet *trp)
123{ 124{
124 if (trp->file[file_directive].name) 125 if (trp->file[file_directive].name)
125 { 126 {
126 if (verify_directive_file (trp, trp->spool)) 127 if (verify_directive_file (trp))
127 return triplet_bad; 128 return triplet_bad;
128 129
129 if (trp->file[file_dist].name == 0 130 if (trp->file[file_dist].name == 0
130 && trp->file[file_signature].name == 0) 131 && trp->file[