LLVM ડેવલપર્સ C++ માં સલામત બફર હેન્ડલિંગનો પ્રસ્તાવ મૂકે છે

LLVM લોગો

LLVM એ કમ્પાઈલર્સ વિકસાવવા તેમજ નવી પ્રોગ્રામિંગ ભાષાઓ બનાવવા અને હાલની ભાષાઓને સુધારવામાં મદદ કરવા માટેનું માળખું છે.

એલએલવીએમ પ્રોજેક્ટના વિકાસકર્તાઓએ સુરક્ષાને મજબૂત કરવાના હેતુથી સંખ્યાબંધ ફેરફારોની દરખાસ્ત કરી પ્રોજેકટની સી ++ મિશન જટિલ છે અને બફર ઓવરરન્સને કારણે થતી ભૂલોને દૂર કરવા માટેનું સાધન પ્રદાન કરે છે.

જેમ કે, તેઓએ જે દરખાસ્ત બહાર પાડી તે ખાસ કરીને બે ક્ષેત્રોમાં કામ પર ધ્યાન કેન્દ્રિત કરે છે: વિકાસ મોડલ પ્રદાન કરે છે જે બફર્સ સાથે સુરક્ષિત રીતે કામ કરવાની મંજૂરી આપે છે અને libc++ સ્ટાન્ડર્ડ ફંક્શન લાઇબ્રેરીની સુરક્ષાને મજબૂત કરવા માટે કામ કરે છે.

તે ઉલ્લેખિત છે કે C++ માટે સૂચિત સુરક્ષિત પ્રોગ્રામિંગ મોડલ «કાચા પોઇંટર્સ સાથે છેડછાડ કરવાને બદલે બફર્સ સાથે કામ કરતી વખતે પ્રમાણભૂત લાઇબ્રેરી દ્વારા પૂરા પાડવામાં આવેલ વર્ગોનો ઉપયોગ કરવાનો છે». ઉદાહરણ તરીકે, std::array, std::vector, અને std::span વર્ગોનો ઉપયોગ કરવાની દરખાસ્ત છે, જે આઉટ-ઓફ-બાઉન્ડ્સ ફાળવેલ મેમરી માટે રનટાઇમ ચેક સાથે ઉમેરવામાં આવશે.

અમારો ધ્યેય નિર્ણાયક C++ કોડ પાયાની સુરક્ષામાં સુધારો કરવાનો છે. આ માટે અમે બે વિચારો પર કામ કરવાની યોજના બનાવી છે.

સખત C++ સ્ટાન્ડર્ડ લાઇબ્રેરી
C++ સેફ બફર પ્રોગ્રામિંગ મોડલ અને એડોપ્શન ટૂલ્સ
કઠણ libc++ સામાન્ય રીતે C++ સ્ટાન્ડર્ડ લાઇબ્રેરી ઇન્ટરફેસોને વધુ સુરક્ષિત બનાવવાનો હેતુ છે.

કઠણ libc++ સાથે C++નું સલામત બફર પ્રોગ્રામિંગ મોડલ આઉટ-ઓફ-બાઉન્ડ્સ મેમરી એક્સેસનું રનટાઇમ શમન પૂરું પાડે છે. દત્તક લેવાના સાધનો આ નવા પ્રોગ્રામિંગ મોડલમાં કોડના સ્થાનાંતરણને સ્વચાલિત કરશે.

આ ઉપરાંત, તે પણ ઉલ્લેખ કરે છે "ખતરનાક" પ્રોગ્રામિંગ પ્રથાઓનો સામનો કરવા માટે રણકાર માં, જો તમામ પોઇન્ટર અંકગણિત કામગીરી માટે કમ્પાઇલર ચેતવણીઓ આપવાનો પ્રસ્તાવ મૂકે છે, "cppcoreguidelines-pro-bounds-pointer-Arithmetic" ફ્લેગનો ઉપયોગ કરતી વખતે ક્લેંગ-વ્યવસ્થિત લિંટર ચેતવણીઓ જેવી જ, જેના માટે આધાર LLVM 16 માં દેખાશે. આવી ચેતવણીઓને સક્ષમ કરવા માટે, રણકારમાં એક અલગ ધ્વજ ઉમેરવામાં આવશે, જે ડિફોલ્ટ રૂપે નિષ્ક્રિય છે. .

libc++ માં વૈકલ્પિક સુરક્ષા મોડને અમલમાં મૂકવાની યોજના છે, જે, જ્યારે સક્ષમ હોય, ત્યારે કેટલીક પરિસ્થિતિઓ શોધી કાઢશે જે રનટાઈમ પર અવ્યાખ્યાયિત વર્તન તરફ દોરી જાય છે. ઉદાહરણ તરીકે, વર્ગોમાં std::span અને std::vector, એક સીમા બહારની ઍક્સેસનું નિરીક્ષણ કરવામાં આવશે, જે કિસ્સામાં પ્રોગ્રામ નિષ્ફળ જશે.

આ વધારાના રનટાઈમ ચેક્સને ઘણી શ્રેણીઓમાં જૂથબદ્ધ કરવામાં આવશે જેને અલગથી નિયંત્રિત કરી શકાય છે. હેતુ એ છે કે તેમના પ્લેટફોર્મ પર વિક્રેતા શિપિંગ libc++ નક્કી કરી શકે છે કે શિપિંગ લાઇબ્રેરીમાં (જો કોઈ હોય તો) કયા ચેકને સક્ષમ કરવા તે ઇચ્છિત સુરક્ષાના સ્તરના આધારે.

વિકાસકર્તાઓ માને છે કે આવા ફેરફારો ઉમેરવાથી libc++ C++ ધોરણો સાથે સુસંગત રહેશે, કારણ કે અવ્યાખ્યાયિત વર્તણૂકના કેસોને કેવી રીતે હેન્ડલ કરવા તેની પસંદગી લાઇબ્રેરીના વિકાસકર્તાઓ પર આધારિત છે, જેઓ અન્ય બાબતોની સાથે, અવ્યાખ્યાયિત વર્તણૂકને એક લૉક તરીકે માની શકે છે જેના માટે પ્રોગ્રામની જરૂર હોય છે. બહાર નીકળો

libc++ માં રનટાઇમ ચેકને શ્રેણીઓમાં વિભાજિત કરવાની યોજના છે જેનો વ્યક્તિગત રીતે સમાવેશ કરી શકાય છે. કેટલાક સૂચવેલ ચેક કે જે વધુ જટિલ કામગીરીમાં પરિણમતા નથી અથવા ABI ફેરફારો પહેલાથી જ libc++ ના સેફ મોડ (સેફ મોડ)માં અમલમાં મુકાયા છે.

પુનરાવર્તિત કરવા માટે, અંતિમ ધ્યેય મોકલેલ લાઇબ્રેરી માટે ઉત્પાદનમાં આ તપાસને સક્ષમ કરવા માટે છે; આ "ફક્ત ડીબગ" સુવિધા નથી, જોકે તે આખરે લાંબા તૂટેલા "ડીબગ મોડ" ને બદલશે.

ઉપરાંત, કોડ સુધારણા સાધનોનો સમૂહ તૈયાર કરવાનું આયોજન છે જે કન્ટેનરમાં વેરીએબલ્સને કાચા પોઈન્ટર્સ સાથે બદલવાની મંજૂરી આપશે અને કન્ટેનર સીધા જ પોઈન્ટરને બદલી શકતું નથી તેવી પરિસ્થિતિઓમાં વૈકલ્પિક હેન્ડલર્સ લાગુ કરવાની મંજૂરી આપશે (ઉદાહરણ તરીકે, "if(array_pointer)" કન્સ્ટ્રક્ટને "if(span.data) માં રૂપાંતરિત કરી શકાય છે. )»).સેટિંગ્સ માત્ર સ્થાનિક ચલોને જ નહીં, પણ પોઇન્ટર સાથેના પરિમાણોને ટાઇપ કરવા માટે પણ લાગુ કરી શકાય છે.

એવો પણ ઉલ્લેખ છે "ક્લાંગ સ્ટેટિક વિશ્લેષક તપાસનાર" પર વિચાર કરી રહ્યાં છે માર્ગ સંવેદનશીલ કે ચેતવણી આપે છે જો std::span તે કન્ટેનરમાંથી બનાવવામાં આવે છે જે સ્પાનના કન્સ્ટ્રક્ટરમાં ઉલ્લેખિત કદ કરતાં નાનું હોય છે. ઉક્ત તપાસકર્તા સ્વયં-સમાયેલ છે અને તેના પોતાના પર ઉપયોગી છે, જો બધું બરાબર થાય તો તે બધા વપરાશકર્તાઓ માટે મૂળભૂત રીતે સક્ષમ કરવામાં આવશે.

છેલ્લે જો તમને તેના વિશે વધુ જાણવામાં રસ છે, તમે માં વિગતો ચકાસી શકો છો નીચેની કડી


તમારી ટિપ્પણી મૂકો

તમારું ઇમેઇલ સરનામું પ્રકાશિત કરવામાં આવશે નહીં. આવશ્યક ક્ષેત્રો સાથે ચિહ્નિત થયેલ છે *

*

*

  1. ડેટા માટે જવાબદાર: AB ઈન્ટરનેટ નેટવર્ક્સ 2008 SL
  2. ડેટાનો હેતુ: નિયંત્રણ સ્પામ, ટિપ્પણી સંચાલન.
  3. કાયદો: તમારી સંમતિ
  4. ડેટાની વાતચીત: કાયદાકીય જવાબદારી સિવાય ડેટા તૃતીય પક્ષને આપવામાં આવશે નહીં.
  5. ડેટા સ્ટોરેજ: cસેન્ટસ નેટવર્ક્સ (ઇયુ) દ્વારા હોસ્ટ કરેલો ડેટાબેઝ
  6. અધિકાર: કોઈપણ સમયે તમે તમારી માહિતીને મર્યાદિત, પુન recoverપ્રાપ્ત અને કા deleteી શકો છો.