26
26
#include <limits.h>
27
27
#include <ctype.h>
28
28
#include <math.h>
29
+ #include <xgboost/c_api.h>
29
30
30
31
#ifdef _STANDALONE_MODULE
31
32
void minimize_bits (afl_state_t * afl , u8 * dst , u8 * src ) {
@@ -117,7 +118,7 @@ void create_alias_table(afl_state_t *afl) {
117
118
118
119
double avg_exec_us = 0.0 ;
119
120
double avg_bitmap_size = 0.0 ;
120
- double avg_top_size = 0.0 ;
121
+ double avg_len = 0.0 ;
121
122
u32 active = 0 ;
122
123
123
124
for (i = 0 ; i < n ; i ++ ) {
@@ -128,8 +129,8 @@ void create_alias_table(afl_state_t *afl) {
128
129
if (likely (!q -> disabled )) {
129
130
130
131
avg_exec_us += q -> exec_us ;
131
- avg_bitmap_size += log ( q -> bitmap_size ) ;
132
- avg_top_size += q -> tc_ref ;
132
+ avg_bitmap_size += q -> bitmap_size ;
133
+ avg_len += q -> len ;
133
134
++ active ;
134
135
135
136
}
@@ -138,37 +139,59 @@ void create_alias_table(afl_state_t *afl) {
138
139
139
140
avg_exec_us /= active ;
140
141
avg_bitmap_size /= active ;
141
- avg_top_size /= active ;
142
+ avg_len /= active ;
143
+
144
+ float * table = malloc ((active + 1 ) * 3 * sizeof (float ));
145
+ float * pentry = table ;
142
146
143
147
for (i = 0 ; i < n ; i ++ ) {
144
148
145
149
struct queue_entry * q = afl -> queue_buf [i ];
146
150
147
151
if (likely (!q -> disabled )) {
148
152
149
- q -> weight =
150
- compute_weight (afl , q , avg_exec_us , avg_bitmap_size , avg_top_size );
153
+ * pentry ++ = q -> len / avg_len ;
154
+ * pentry ++ = q -> exec_us / avg_exec_us ;
155
+ * pentry ++ = q -> bitmap_size / avg_bitmap_size ;
151
156
q -> perf_score = calculate_score (afl , q );
152
- sum += q -> weight ;
153
157
154
158
}
155
159
156
160
}
157
161
158
- if (unlikely (afl -> schedule == MMOPT ) && afl -> queued_discovered ) {
162
+ DMatrixHandle dtest ;
163
+ BoosterHandle booster ;
159
164
160
- u32 cnt = afl -> queued_discovered >= 5 ? 5 : afl -> queued_discovered ;
165
+ // Erstellen einer DMatrix aus dem Array
166
+ XGDMatrixCreateFromMat ((float * )table , 3 , active , -1 , & dtest );
167
+ XGBoosterCreate (& dtest , 1 , & booster );
168
+ XGBoosterLoadModel (booster , "./model.bin" );
169
+
170
+ bst_ulong out_len ;
171
+ const float * predictions ;
172
+ XGBoosterPredict (booster , dtest , 0 , 0 , 0 , & out_len , & predictions );
161
173
162
- for (i = n - cnt ; i < n ; i ++ ) {
174
+ // Ausgabe der Vorhersagen
175
+ int count = 0 ;
176
+ for (i = 0 ; i < n ; i ++ ) {
163
177
164
- struct queue_entry * q = afl -> queue_buf [i ];
178
+ struct queue_entry * q = afl -> queue_buf [i ];
165
179
166
- if (likely (!q -> disabled )) { q -> weight *= 2.0 ; }
180
+ if (likely (!q -> disabled )) {
181
+
182
+ fprintf (stderr , "Prediction[%u] = %f\n" , i , predictions [count ]);
183
+ afl -> queue_buf [i ]-> weight = predictions [count ++ ];
184
+ sum += predictions [count ++ ];
167
185
168
186
}
169
187
170
188
}
171
189
190
+ // Freigeben der Ressourcen
191
+ XGBoosterFree (booster );
192
+ XGDMatrixFree (dtest );
193
+ free (table );
194
+
172
195
for (i = 0 ; i < n ; i ++ ) {
173
196
174
197
// weight is always 0 for disabled entries
0 commit comments