git-svn: trunk@2050
Tomasz Kojm authored on 2006/06/28 22:11:03... | ... |
@@ -1,3 +1,8 @@ |
1 |
+Wed Jun 28 15:06:08 CEST 2006 (tk) |
|
2 |
+---------------------------------- |
|
3 |
+ * sigtool/sigtool.c: include CVD header (without MD5 and digital signature) |
|
4 |
+ at the top of db.info file |
|
5 |
+ |
|
1 | 6 |
Wed Jun 28 00:00:50 CEST 2006 (tk) |
2 | 7 |
---------------------------------- |
3 | 8 |
* sigtool: --diff: initial version of update script generator |
... | ... |
@@ -263,7 +263,7 @@ static char *getdsig(const char *host, const char *user, const char *data) |
263 | 263 |
return strdup(pt); |
264 | 264 |
} |
265 | 265 |
|
266 |
-static int writeinfo(const char *db, unsigned int ver) |
|
266 |
+static int writeinfo(const char *db, const char *header) |
|
267 | 267 |
{ |
268 | 268 |
FILE *fh; |
269 | 269 |
int i; |
... | ... |
@@ -285,8 +285,8 @@ static int writeinfo(const char *db, unsigned int ver) |
285 | 285 |
return -1; |
286 | 286 |
} |
287 | 287 |
|
288 |
- if(fprintf(fh, "%s:%u\n", db, ver) < 0) { |
|
289 |
- mprintf("!writeinfo: Can't write to info file\n"); |
|
288 |
+ if(fprintf(fh, "%s\n", header) < 0) { |
|
289 |
+ mprintf("!writeinfo: Can't write to %s\n", file); |
|
290 | 290 |
fclose(fh); |
291 | 291 |
return -1; |
292 | 292 |
} |
... | ... |
@@ -317,10 +317,10 @@ static int build(struct optstruct *opt) |
317 | 317 |
{ |
318 | 318 |
int ret; |
319 | 319 |
size_t bytes; |
320 |
- unsigned int sigs = 0, lines = 0, version; |
|
320 |
+ unsigned int sigs = 0, lines = 0, version, real_header; |
|
321 | 321 |
struct stat foo; |
322 | 322 |
char buffer[FILEBUFF], *tarfile, *gzfile, header[513], |
323 |
- smbuff[30], *pt, *dbdir; |
|
323 |
+ smbuff[30], builder[32], *pt, *dbdir; |
|
324 | 324 |
struct cl_node *root = NULL; |
325 | 325 |
FILE *tar, *cvd; |
326 | 326 |
gzFile *gz; |
... | ... |
@@ -397,17 +397,61 @@ static int build(struct optstruct *opt) |
397 | 397 |
scanf("%u", &version); |
398 | 398 |
} |
399 | 399 |
|
400 |
+ strcpy(header, "ClamAV-VDB:"); |
|
401 |
+ |
|
402 |
+ /* time */ |
|
403 |
+ time(&timet); |
|
404 |
+ brokent = localtime(&timet); |
|
405 |
+ setlocale(LC_TIME, "C"); |
|
406 |
+ strftime(smbuff, sizeof(smbuff), "%d %b %Y %H-%M %z", brokent); |
|
407 |
+ strcat(header, smbuff); |
|
408 |
+ |
|
409 |
+ /* version */ |
|
410 |
+ sprintf(smbuff, ":%d:", version); |
|
411 |
+ strcat(header, smbuff); |
|
412 |
+ |
|
413 |
+ /* number of signatures */ |
|
414 |
+ sprintf(smbuff, "%d:", sigs); |
|
415 |
+ strcat(header, smbuff); |
|
416 |
+ |
|
417 |
+ /* functionality level */ |
|
418 |
+ sprintf(smbuff, "%d:", cl_retflevel()); |
|
419 |
+ strcat(header, smbuff); |
|
420 |
+ |
|
421 |
+ real_header = strlen(header); |
|
422 |
+ |
|
423 |
+ /* add fake MD5 and dsig (for writeinfo) */ |
|
424 |
+ strcat(header, "X:X:"); |
|
425 |
+ |
|
426 |
+ /* ask for builder name */ |
|
427 |
+ fflush(stdin); |
|
428 |
+ mprintf("Builder name: "); |
|
429 |
+ if(fgets(builder, sizeof(builder), stdin)) { |
|
430 |
+ cli_chomp(builder); |
|
431 |
+ } else { |
|
432 |
+ mprintf("!build: Can't get builder name\n"); |
|
433 |
+ return -1; |
|
434 |
+ } |
|
435 |
+ |
|
436 |
+ /* add builder */ |
|
437 |
+ strcat(header, builder); |
|
438 |
+ |
|
439 |
+ /* add current time */ |
|
440 |
+ sprintf(header + strlen(header), ":%d", (int) timet); |
|
441 |
+ |
|
400 | 442 |
pt = opt_arg(opt, "build"); |
401 | 443 |
if(strstr(pt, "main")) |
402 | 444 |
pt = "main"; |
403 | 445 |
else |
404 | 446 |
pt = "daily"; |
405 | 447 |
|
406 |
- if(writeinfo(pt, version) == -1) { |
|
448 |
+ if(writeinfo(pt, header) == -1) { |
|
407 | 449 |
mprintf("!build: Can't generate info file\n"); |
408 | 450 |
return -1; |
409 | 451 |
} |
410 | 452 |
|
453 |
+ header[real_header] = 0; |
|
454 |
+ |
|
411 | 455 |
if(!(tarfile = cli_gentemp("."))) { |
412 | 456 |
mprintf("!build: Can't generate temporary name for tarfile\n"); |
413 | 457 |
return -1; |
... | ... |
@@ -480,28 +524,6 @@ static int build(struct optstruct *opt) |
480 | 480 |
unlink(tarfile); |
481 | 481 |
free(tarfile); |
482 | 482 |
|
483 |
- /* build header */ |
|
484 |
- strcpy(header, "ClamAV-VDB:"); |
|
485 |
- |
|
486 |
- /* time */ |
|
487 |
- time(&timet); |
|
488 |
- brokent = localtime(&timet); |
|
489 |
- setlocale(LC_TIME, "C"); |
|
490 |
- strftime(smbuff, sizeof(smbuff), "%d %b %Y %H-%M %z", brokent); |
|
491 |
- strcat(header, smbuff); |
|
492 |
- |
|
493 |
- /* increment version number by one */ |
|
494 |
- sprintf(smbuff, ":%d:", version); |
|
495 |
- strcat(header, smbuff); |
|
496 |
- |
|
497 |
- /* number of signatures */ |
|
498 |
- sprintf(smbuff, "%d:", sigs); |
|
499 |
- strcat(header, smbuff); |
|
500 |
- |
|
501 |
- /* functionality level */ |
|
502 |
- sprintf(smbuff, "%d:", cl_retflevel()); |
|
503 |
- strcat(header, smbuff); |
|
504 |
- |
|
505 | 483 |
/* MD5 */ |
506 | 484 |
if(!(pt = cli_md5file(gzfile))) { |
507 | 485 |
mprintf("!build: Can't generate MD5 checksum for gzfile\n"); |
... | ... |
@@ -513,18 +535,6 @@ static int build(struct optstruct *opt) |
513 | 513 |
free(pt); |
514 | 514 |
strcat(header, ":"); |
515 | 515 |
|
516 |
- /* ask for builder name */ |
|
517 |
- fflush(stdin); |
|
518 |
- mprintf("Builder name: "); |
|
519 |
- if(fgets(smbuff, sizeof(smbuff), stdin)) { |
|
520 |
- cli_chomp(smbuff); |
|
521 |
- } else { |
|
522 |
- mprintf("!build: Can't get builder name\n"); |
|
523 |
- unlink(gzfile); |
|
524 |
- free(gzfile); |
|
525 |
- return -1; |
|
526 |
- } |
|
527 |
- |
|
528 | 516 |
/* digital signature */ |
529 | 517 |
if(!(tar = fopen(gzfile, "rb"))) { |
530 | 518 |
mprintf("!build: Can't open file %s for reading\n", gzfile); |
... | ... |
@@ -542,7 +552,7 @@ static int build(struct optstruct *opt) |
542 | 542 |
free(pt); |
543 | 543 |
rewind(tar); |
544 | 544 |
|
545 |
- if(!(pt = getdsig(opt_arg(opt, "server"), smbuff, buffer))) { |
|
545 |
+ if(!(pt = getdsig(opt_arg(opt, "server"), builder, buffer))) { |
|
546 | 546 |
mprintf("!build: Can't get digital signature from remote server\n"); |
547 | 547 |
unlink(gzfile); |
548 | 548 |
free(gzfile); |
... | ... |
@@ -554,7 +564,7 @@ static int build(struct optstruct *opt) |
554 | 554 |
strcat(header, ":"); |
555 | 555 |
|
556 | 556 |
/* add builder */ |
557 |
- strcat(header, smbuff); |
|
557 |
+ strcat(header, builder); |
|
558 | 558 |
|
559 | 559 |
/* add current time */ |
560 | 560 |
sprintf(header + strlen(header), ":%d", (int) timet); |