Double-Free
ডাবল-ফ্রি
একই pointer-এ free() দুইবার ডাকলে allocator-এর free-list metadata corrupt হয় — arbitrary write primitive পর্যন্ত পৌঁছাতে পারে।
free(p);
free(p); // p এখনো একই free-list-এ দুইবার ঢোকে — linkage করাপ্ট হয়
- বেশিরভাগ allocator free-list linkage freed chunk-এর ভেতরেই রাখে — double-free সেই metadata নিজেই নষ্ট করে
- সঠিকভাবে crafted double-free পরবর্তী
malloc()call-কে attacker-নির্ধারিত arbitrary address ফেরত দিতে বাধ্য করতে পারে — write-what-where primitive - সহজ প্রতিরোধ: free()-এর পরপরই pointer-কে NULL করা (“nulling”) — সস্তা কিন্তু অসম্পূর্ণ, কারণ dangling copy অন্য জায়গায় থেকে যেতে পারে