Exemple #1
0
static void
dumpFileKSI(char *name)
{
	FILE *fp;
	char hdr[9];
	void *obj;
	tlvrecord_t rec;
	int r = -1;
	
	if(!strcmp(name, "-"))
		fp = stdin;
	else {
		printf("Processing file %s:\n", name);
		if((fp = fopen(name, "r")) == NULL) {
			perror(name);
			goto err;
		}
	}
	if((r = rsksi_tlvrdHeader(fp, (uchar*)hdr)) != 0) goto err;
	if(!strcmp(hdr, "LOGSIG10"))
		printf("File Header: Version 10 (deprecated) - conversion needed.\n");
	else if(!strcmp(hdr, "LOGSIG11"))
		printf("File Header: Version 11\n");
	else
		printf("File Header: '%s'\n", hdr);
	while(1) { /* we will err out on EOF */
		if((r = rsksi_tlvrd(fp, &rec, &obj)) != 0) {
			if(feof(fp))
				break;
			else
				goto err;
		}
		rsksi_tlvprint(stdout, rec.tlvtype, obj, verbose);
		rsksi_objfree(rec.tlvtype, obj);
	}

	if(fp != stdin)
		fclose(fp);
	return;
err:	fprintf(stderr, "error %d (%s) processing file %s\n", r, RSKSIE2String(r), name);
}
Exemple #2
0
static void
convertFileKSI(char *name)
{
    FILE *oldsigfp = NULL, *newsigfp = NULL;
    char hdr[9];
    int r = -1;
    char newsigfname[4096];
    char oldsigfname[4096];

    if(!strcmp(name, "-"))
        oldsigfp = stdin;
    else {
        printf("Processing file %s:\n", name);
        if((oldsigfp = fopen(name, "r")) == NULL) {
            perror(name);
            goto err;
        }
    }
    if((r = rsksi_tlvrdHeader(oldsigfp, (uchar*)hdr)) != 0) goto err;
    if(!strcmp(hdr, "LOGSIG10")) {
        printf("Found Signature File with Version 10 - starting conversion.\n");
        snprintf(newsigfname, sizeof(newsigfname), "%s.LOGSIG11", name);
        snprintf(oldsigfname, sizeof(oldsigfname), "%s.LOGSIG10", name);
        if((newsigfp = fopen(newsigfname, "w")) == NULL) {
            perror(newsigfname);
            r = RSGTE_IO;
            goto err;
        }
        else {
            /* Write FileHeader first */
            if ( fwrite(LOGSIGHDR, sizeof(LOGSIGHDR)-1, 1, newsigfp) != 1) goto err;
        }

        if ((r = rsksi_ConvertSigFile(oldsigfp, newsigfp, verbose)) != 0)
            goto err;
        else {
            /* Close FILES */
            if(oldsigfp != stdin)
                fclose(oldsigfp);
            if (newsigfp != NULL)
                fclose(newsigfp);

            /* Delete OLDFILE if there is one*/
            if(unlink(oldsigfname) != 0) {
                if(errno != ENOENT) {
                    perror("Error removing old file");
                    r = RSGTE_IO;
                    goto err;
                }
            }
            /* Copy main sigfile to oldfile */
            if(link(name, oldsigfname) != 0) {
                perror("Error moving old file");
                r = RSGTE_IO;
                goto err;
            }

            /* Delete current sigfile*/
            if(unlink(name) != 0) {
                if(errno != ENOENT) {
                    perror("Error removing old file");
                    r = RSGTE_IO;
                    goto err;
                }
            }
            /* Copy new sigfile to main sigfile */
            if(link(newsigfname, name) != 0) {
                perror("Error moving new file");
                r = RSGTE_IO;
                goto err;
            }

            /* Delete temporary new sigfile*/
            if(unlink(newsigfname) != 0) {
                if(errno != ENOENT) {
                    perror("Error removing new file");
                    r = RSGTE_IO;
                    goto err;
                }
            }

            printf("File %s was converted to Version 11.\n", name);
        }
    }
    else
        printf("File does not need to be converted, File Header is: '%s'\n", hdr);
    return;
err:
    fprintf(stderr, "error %d (%s) converting file %s\n", r, RSKSIE2String(r), name);
}