implemented blacklisting of software packages

This commit is contained in:
Andreas Steffen
2012-11-14 11:38:45 +01:00
parent 07474b6062
commit a95959cce6
10 changed files with 207 additions and 81 deletions
+7 -3
View File
@@ -128,7 +128,7 @@ static void do_args(int argc, char *argv[])
{ "delete", no_argument, NULL, 'd' },
{ "del", no_argument, NULL, 'd' },
{ "aik", required_argument, NULL, 'A' },
{ "security", no_argument, NULL, 'B' },
{ "blacklist", no_argument, NULL, 'B' },
{ "component", required_argument, NULL, 'C' },
{ "comp", required_argument, NULL, 'C' },
{ "directory", required_argument, NULL, 'D' },
@@ -142,8 +142,9 @@ static void do_args(int argc, char *argv[])
{ "relative", no_argument, NULL, 'R' },
{ "rel", no_argument, NULL, 'R' },
{ "sequence", required_argument, NULL, 'S' },
{ "version", required_argument, NULL, 'V' },
{ "seq", required_argument, NULL, 'S' },
{ "version", required_argument, NULL, 'V' },
{ "security", no_argument, NULL, 'Y' },
{ "sha1", no_argument, NULL, '1' },
{ "sha256", no_argument, NULL, '2' },
{ "sha384", no_argument, NULL, '3' },
@@ -229,7 +230,7 @@ static void do_args(int argc, char *argv[])
continue;
}
case 'B':
attest->set_security(attest);
attest->set_security(attest, OS_PACKAGE_STATE_BLACKLIST);
continue;
case 'C':
if (!attest->set_component(attest, optarg, op == OP_ADD))
@@ -290,6 +291,9 @@ static void do_args(int argc, char *argv[])
exit(EXIT_FAILURE);
}
continue;
case 'Y':
attest->set_security(attest, OS_PACKAGE_STATE_SECURITY);
continue;
case '1':
attest->set_algo(attest, PTS_MEAS_ALGO_SHA1);
continue;
+11 -8
View File
@@ -143,9 +143,9 @@ struct private_attest_db_t {
bool relative;
/**
* TRUE if a security issue exists
* Package security state
*/
bool security;
os_package_state_t security;
/**
* Sequence number for ordering entries
@@ -722,9 +722,9 @@ METHOD(attest_db_t, set_relative, void,
}
METHOD(attest_db_t, set_security, void,
private_attest_db_t *this)
private_attest_db_t *this, os_package_state_t security)
{
this->security = TRUE;
this->security = security;
}
METHOD(attest_db_t, set_sequence, void,
@@ -897,7 +897,8 @@ METHOD(attest_db_t, list_packages, void,
{
enumerator_t *e;
char *package, *version;
int gid, gid_old = 0, security, spaces, count = 0;
os_package_state_t security;
int gid, gid_old = 0, spaces, count = 0;
time_t t;
if (this->pid)
@@ -924,7 +925,8 @@ METHOD(attest_db_t, list_packages, void,
printf(" ");
}
}
printf(" %T (%s) %s\n", &t, TRUE, version, security ? "[s]" : "");
printf(" %T (%s)%N\n", &t, TRUE, version,
os_package_state_names, security);
count++;
}
e->destroy(e);
@@ -1493,9 +1495,10 @@ METHOD(attest_db_t, add, bool,
DB_UINT, this->gid, DB_UINT, this->pid, DB_TEXT,
this->version, DB_UINT, this->security, DB_INT, t) == 1;
printf("'%s' package %s (%s) %s%sinserted into database\n",
printf("'%s' package %s (%s)%N %sinserted into database\n",
this->product, this->package, this->version,
this->security ? "[s] " : "", success ? "" : "could not be ");
os_package_state_names, this->security,
success ? "" : "could not be ");
}
return success;
}
@@ -23,7 +23,7 @@
#define ATTEST_DB_H_
#include <pts/pts_meas_algo.h>
#include <os_info/os_info.h>
#include <library.h>
typedef struct attest_db_t attest_db_t;
@@ -161,9 +161,9 @@ struct attest_db_t {
void (*set_relative)(attest_db_t *this);
/**
* Set the security vulnerability flag
* Set the package security state
*/
void (*set_security)(attest_db_t *this);
void (*set_security)(attest_db_t *this, os_package_state_t security);
/**
* Set the sequence number