mirror of
https://github.com/norandom/OpenUltraSAST.git
synced 2026-10-18 04:29:27 +00:00
Harvest 176 isolated vuln-vs-fix functions (109 CVEs, 352 training rows) into benchmarks/pairs/vfc with provenance and a JSONL training manifest. Score the slice as an honesty dashboard (ousast pairs --slice vfc); keep the pair gate on the local fixtures only.
52 lines
1.7 KiB
Plaintext
52 lines
1.7 KiB
Plaintext
/* Provenance: openssl/openssl link_hash_cert (fixed).
|
|
* repo: openssl/openssl
|
|
* commit: 1ad73b4d27bd8c1b369a3cd453681d3a4f1bb9b2
|
|
* parent: 7d56a74a96828985db7354a55227a511615f732b
|
|
* commit_url: https://github.com/openssl/openssl/commit/1ad73b4d27bd8c1b369a3cd453681d3a4f1bb9b2
|
|
* cve: CVE-2022-1292
|
|
* license: Apache-2.0
|
|
* function: link_hash_cert
|
|
* relpath: tools/c_rehash.in
|
|
*/
|
|
|
|
sub link_hash_cert {
|
|
my $fname = $_[0];
|
|
my ($hash, $fprint) = compute_hash($openssl, "x509", $x509hash,
|
|
"-fingerprint", "-noout",
|
|
"-in", $fname);
|
|
chomp $hash;
|
|
chomp $fprint;
|
|
return if !$hash;
|
|
$fprint =~ s/^.*=//;
|
|
$fprint =~ tr/://d;
|
|
my $suffix = 0;
|
|
# Search for an unused hash filename
|
|
while(exists $hashlist{"$hash.$suffix"}) {
|
|
# Hash matches: if fingerprint matches its a duplicate cert
|
|
if ($hashlist{"$hash.$suffix"} eq $fprint) {
|
|
print STDERR "WARNING: Skipping duplicate certificate $fname\n";
|
|
return;
|
|
}
|
|
$suffix++;
|
|
}
|
|
$hash .= ".$suffix";
|
|
if ($symlink_exists) {
|
|
print "link $fname -> $hash\n" if $verbose;
|
|
symlink $fname, $hash || warn "Can't symlink, $!";
|
|
} else {
|
|
print "copy $fname -> $hash\n" if $verbose;
|
|
if (open($in, "<", $fname)) {
|
|
if (open($out,">", $hash)) {
|
|
print $out $_ while (<$in>);
|
|
close $out;
|
|
} else {
|
|
warn "can't open $hash for write, $!";
|
|
}
|
|
close $in;
|
|
} else {
|
|
warn "can't open $fname for read, $!";
|
|
}
|
|
}
|
|
$hashlist{$hash} = $fprint;
|
|
}
|