Προγραμματιστές του έργου Grsecurity
Κατά τη δοκιμή της ενημέρωσης κώδικα, οι προγραμματιστές παρατήρησαν ότι κατά τη δημιουργία, ο μεταγλωττιστής εμφανίζει μια προειδοποίηση σχετικά με την ανάμειξη κώδικα και ορισμών (η δομή ορίστηκε μετά τον κώδικα, εκχωρώντας μια τιμή σε μια υπάρχουσα μεταβλητή):
δείκτης int = n;
if (n < HBP_NUM) { index = array_index_nospec(index, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
Ο Λίνος δέχτηκε
if (n < HBP_NUM) { int index = array_index_nospec(n, HBP_NUM); struct perf_event *bp = thread->ptrace_bps[index];
Τον Ιούλιο, η ενημέρωση κώδικα μεταφέρθηκε επίσης στους κλάδους σταθερού πυρήνα 4.4, 4.9, 4.14, 4.19 και 5.2. Οι συντηρητές των στάβλων αντιμετώπισαν επίσης την προειδοποίηση και, αντί να ελέγξουν αν είχε ήδη διορθωθεί στον κύριο κλάδο του Linus, έκαναν μια επιδιόρθωση μόνοι τους. Το πρόβλημα είναι ότι χωρίς να το σκέφτονται πραγματικά, απλώς
δείκτης int = n;
if (n < HBP_NUM ){ struct perf_event *bp = thread->ptrace_bps[index];
index = array_index_nospec(index, HBP_NUM);
Πηγή: opennet.ru