@@ -65,91 +65,61 @@ component_item *declared_components;
6565uint8_t trace_id [MD5_LEN ];
6666bool trace_on ;
6767
68-
68+ #define LDB_VER_MIN "4.1.0"
6969/* Initialize tables for the DB name indicated (defaults to oss) */
7070void initialize_ldb_tables (char * name )
7171{
72+
73+ char * ldb_ver = NULL ;
74+ ldb_version (& ldb_ver );
75+ scanlog ("ldb version: %s\n" , ldb_ver );
76+
77+ if (!ldb_ver || strcmp (ldb_ver , LDB_VER_MIN ) < 0 )
78+ {
79+ fprintf (stderr , "The current ldb version %s is too old, please upgrade to %s to proceed\n" , ldb_ver , LDB_VER_MIN );
80+ exit (EXIT_FAILURE );
81+ }
82+ free (ldb_ver );
83+
7284 char oss_db_name [MAX_ARGLN ];
7385
7486 if (name ) strcpy (oss_db_name , name );
7587 else strcpy (oss_db_name , DEFAULT_OSS_DB_NAME );
7688
77- strcpy (oss_url .db , oss_db_name );
78- strcpy (oss_url .table , "url" );
79- oss_url .key_ln = 16 ;
80- oss_url .rec_ln = 0 ;
81- oss_url .ts_ln = 2 ;
82- oss_url .tmp = false;
83-
84- strcpy (oss_file .db , oss_db_name );
85- strcpy (oss_file .table , "file" );
86- oss_file .key_ln = 16 ;
87- oss_file .rec_ln = 0 ;
88- oss_file .ts_ln = 2 ;
89- oss_file .tmp = false;
90-
91- strcpy (oss_wfp .db , oss_db_name );
92- strcpy (oss_wfp .table , "wfp" );
93- oss_wfp .key_ln = 4 ;
94- oss_wfp .rec_ln = 18 ;
95- oss_wfp .ts_ln = 2 ;
96- oss_wfp .tmp = false;
97-
98- strcpy (oss_purl .db , oss_db_name );
99- strcpy (oss_purl .table , "purl" );
100- oss_purl .key_ln = 16 ;
101- oss_purl .rec_ln = 0 ;
102- oss_purl .ts_ln = 2 ;
103- oss_purl .tmp = false;
104-
105- strcpy (oss_copyright .db , oss_db_name );
106- strcpy (oss_copyright .table , "copyright" );
107- oss_copyright .key_ln = 16 ;
108- oss_copyright .rec_ln = 0 ;
109- oss_copyright .ts_ln = 2 ;
110- oss_copyright .tmp = false;
111-
112- strcpy (oss_quality .db , oss_db_name );
113- strcpy (oss_quality .table , "quality" );
114- oss_quality .key_ln = 16 ;
115- oss_quality .rec_ln = 0 ;
116- oss_quality .ts_ln = 2 ;
117- oss_quality .tmp = false;
118-
119- strcpy (oss_vulnerability .db , oss_db_name );
120- strcpy (oss_vulnerability .table , "vulnerability" );
121- oss_vulnerability .key_ln = 16 ;
122- oss_vulnerability .rec_ln = 0 ;
123- oss_vulnerability .ts_ln = 2 ;
124- oss_vulnerability .tmp = false;
125-
126- strcpy (oss_dependency .db , oss_db_name );
127- strcpy (oss_dependency .table , "dependency" );
128- oss_dependency .key_ln = 16 ;
129- oss_dependency .rec_ln = 0 ;
130- oss_dependency .ts_ln = 2 ;
131- oss_dependency .tmp = false;
132-
133- strcpy (oss_license .db , oss_db_name );
134- strcpy (oss_license .table , "license" );
135- oss_license .key_ln = 16 ;
136- oss_license .rec_ln = 0 ;
137- oss_license .ts_ln = 2 ;
138- oss_license .tmp = false;
139-
140- strcpy (oss_attribution .db , oss_db_name );
141- strcpy (oss_attribution .table , "attribution" );
142- oss_attribution .key_ln = 16 ;
143- oss_attribution .rec_ln = 0 ;
144- oss_attribution .ts_ln = 2 ;
145- oss_attribution .tmp = false;
146-
147- strcpy (oss_cryptography .db , oss_db_name );
148- strcpy (oss_cryptography .table , "cryptography" );
149- oss_cryptography .key_ln = 16 ;
150- oss_cryptography .rec_ln = 0 ;
151- oss_cryptography .ts_ln = 2 ;
152- oss_cryptography .tmp = false;
89+ char dbtable [MAX_ARGLN * 2 ];
90+ scanlog ("Loading tables definitions\n" );
91+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "url" );
92+ oss_url = ldb_read_cfg (dbtable );
93+
94+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "file" );
95+ oss_file = ldb_read_cfg (dbtable );
96+
97+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "wfp" );
98+ oss_wfp = ldb_read_cfg (dbtable );
99+
100+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "purl" );
101+ oss_purl = ldb_read_cfg (dbtable );
102+
103+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "copyright" );
104+ oss_copyright = ldb_read_cfg (dbtable );
105+
106+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "quality" );
107+ oss_quality = ldb_read_cfg (dbtable );
108+
109+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "vulnerability" );
110+ oss_vulnerability = ldb_read_cfg (dbtable );
111+
112+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "dependency" );
113+ oss_dependency = ldb_read_cfg (dbtable );
114+
115+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "license" );
116+ oss_license = ldb_read_cfg (dbtable );
117+
118+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "attribution" );
119+ oss_attribution = ldb_read_cfg (dbtable );
120+
121+ snprintf (dbtable , MAX_ARGLN * 2 , "%s/%s" , oss_db_name , "cryptography" );
122+ oss_cryptography = ldb_read_cfg (dbtable );
153123
154124 kb_version_get ();
155125 osadl_load_file ();
@@ -304,12 +274,10 @@ int main(int argc, char **argv)
304274
305275 microseconds_start = microseconds_now ();
306276
307- initialize_ldb_tables (NULL );
308-
309277 /* Parse arguments */
310278 int option ;
311279 bool invalid_argument = false;
312-
280+ char * ldb_db_name = NULL ;
313281 while ((option = getopt (argc , argv , ":f:s:b:B:c:k:a:F:l:n:i:M:N:wtvhedqH" )) != -1 )
314282 {
315283 /* Check valid alpha is entered */
@@ -339,6 +307,7 @@ int main(int argc, char **argv)
339307 break ;
340308
341309 case 'k' :
310+ initialize_ldb_tables (ldb_db_name );
342311 mz_file_contents (optarg , oss_file .db );
343312 exit (EXIT_SUCCESS );
344313 break ;
@@ -359,7 +328,7 @@ int main(int argc, char **argv)
359328 break ;
360329
361330 case 'n' :
362- initialize_ldb_tables (optarg );
331+ ldb_db_name = strdup (optarg );
363332 break ;
364333 case 'M' :
365334 scan_max_snippets = atol (optarg );
@@ -475,6 +444,9 @@ int main(int argc, char **argv)
475444 exit (EXIT_FAILURE );
476445 }
477446
447+ initialize_ldb_tables (ldb_db_name );
448+ free (ldb_db_name );
449+
478450 /* Remove trailing backslashes from target (if any) */
479451 strcpy (target , argv [argc - 1 ]);
480452 for (int i = strlen (target )- 1 ; i >=0 ; i -- ) if (target [i ]== '/' ) target [i ]= 0 ; else break ;
0 commit comments