#!/usr/bin/perl -w
# gets all-cve.csv as input (from bin/by-product.pl)
use strict;

my $dn = `dirname $0`;chomp($dn);
my $pwd = `pwd`;chomp($pwd);
if ($dn !~ /^\//) { $dn = $pwd . "/" . $dn; }
push @INC,$dn;

require SMASHData;

while (<>) {
	my $line = $_;
	chomp;
	my ($cve,$date,$days,$susescore,$nvdscore,@pkgs) = split(/,/);

	next unless ($cve =~ /^CVE-/);

	read_smash_issue($cve,0);

	my $pkgs = join(",",@pkgs);

	$pkgs =~ s/^"//; $pkgs =~ s/"$//;

	@pkgs = split(/,/,$pkgs);

	my %modules = ();

	if (!defined($SMASHData::pkgstate{$cve})) {
		# print STDERR "skip $cve ($pkgs)\n" ;
		next;
	}

	my %pkgstate = %{$SMASHData::pkgstate{$cve}};
	my $onlypython = 0;
	foreach my $prod (sort keys %pkgstate) {
		my %prodstate = %{$pkgstate{$prod}};

		foreach my $pkg (keys %prodstate) {
			if ($pkg !~ /^python/) {
				# print STDERR "$cve has $pkg\n";
				#$onlypython = 0;
				next;
			}
			next if ($prodstate{$pkg} eq "Not affected");

			$onlypython = 1;
			$modules{$pkg} = 1; # if ($pkg =~ /^python3?-.*/);
		}
	}
	next unless ($onlypython);

	print "$cve " . join(",",sort keys (%modules)) . "\n";
}
