Glibc 2.31 ಸಿಸ್ಟಮ್ ಲೈಬ್ರರಿ ಬಿಡುಗಡೆ

ಆರು ತಿಂಗಳ ಅಭಿವೃದ್ಧಿಯ ನಂತರ ಪ್ರಕಟಿಸಲಾಗಿದೆ ಸಿಸ್ಟಮ್ ಲೈಬ್ರರಿ ಬಿಡುಗಡೆ GNU C ಲೈಬ್ರರಿ (glibc) 2.31, ಇದು ISO C11 ಮತ್ತು POSIX.1-2008 ಮಾನದಂಡಗಳ ಅವಶ್ಯಕತೆಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಅನುಸರಿಸುತ್ತದೆ. ಹೊಸ ಬಿಡುಗಡೆಯು 58 ಡೆವಲಪರ್‌ಗಳಿಂದ ಪರಿಹಾರಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.

Glibc 2.31 ರಲ್ಲಿ ಅಳವಡಿಸಲಾದವುಗಳಿಂದ ಅಭಿವೃದ್ಧಿಗಳು ನೀವು ಗಮನಿಸಬಹುದು:

  • ಕರಡು ಭವಿಷ್ಯದ ISO ಮಾನದಂಡದಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು _ISOC2X_SOURCE ಮ್ಯಾಕ್ರೋವನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಸಿ 2 ಎಕ್ಸ್. ಈ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು _GNU_SOURCE ಮ್ಯಾಕ್ರೋ ಬಳಸುವಾಗ ಅಥವಾ "-std=gnu2x" ಫ್ಲ್ಯಾಗ್‌ನೊಂದಿಗೆ gcc ನಲ್ಲಿ ನಿರ್ಮಿಸುವಾಗ ಸಹ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗುತ್ತದೆ;
  • ಹೆಡರ್ ಫೈಲ್ "math.h" ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಕಾರ್ಯಗಳಿಗಾಗಿ ಅವುಗಳ ಫಲಿತಾಂಶಗಳನ್ನು ಸಣ್ಣ ಪ್ರಕಾರಕ್ಕೆ ಸುತ್ತುವರೆದಿರುವಂತೆ, "tgmath.h" ಫೈಲ್‌ನಲ್ಲಿ ಅನುಗುಣವಾದ ಜೆನೆರಿಕ್ ಪ್ರಕಾರದ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ, ವಿಶೇಷಣಗಳು TS 18661-1:2014 ಮತ್ತು TS 18661-3: 2015;
  • pthread_clockjoin_np() ಫಂಕ್ಷನ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಥ್ರೆಡ್ ಪೂರ್ಣಗೊಳ್ಳಲು ಕಾಯುತ್ತದೆ, ಕಾಲಾವಧಿಯನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ (ಮುಗಿಸುವ ಮೊದಲು ಸಮಯ ಮೀರಿದರೆ, ಕಾರ್ಯವು ದೋಷವನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ). ಭಿನ್ನವಾಗಿ pthread_timedjoin_np(), pthread_clockjoin_np() ನಲ್ಲಿ ಸಮಯ ಮೀರುವಿಕೆಯನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಟೈಮರ್ ಪ್ರಕಾರವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸಾಧ್ಯವಿದೆ - CLOCK_MONOTONIC (ನಿದ್ರೆಯ ಮೋಡ್‌ನಲ್ಲಿ ಸಿಸ್ಟಮ್ ಕಳೆದ ಸಮಯವನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ) ಅಥವಾ CLOCK_REALTIME;
  • DNS ಪರಿಹಾರಕವು ಈಗ /etc/resolv.conf ನಲ್ಲಿನ ವಿಶ್ವಾಸ-ಜಾಹೀರಾತು ಆಯ್ಕೆಯನ್ನು ಮತ್ತು _res.options ನಲ್ಲಿ RES_TRUSTAD ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಹೊಂದಿಸಿದಾಗ, DNSSEC ಫ್ಲ್ಯಾಗ್ ಅನ್ನು DNS ವಿನಂತಿಗಳಲ್ಲಿ ರವಾನಿಸಲಾಗುತ್ತದೆ. AD (ದೃಢೀಕರಿಸಿದ ಡೇಟಾ). ಈ ಕ್ರಮದಲ್ಲಿ, ಸರ್ವರ್‌ನಿಂದ ಹೊಂದಿಸಲಾದ AD ಫ್ಲ್ಯಾಗ್ res_search() ನಂತಹ ಕಾರ್ಯಗಳನ್ನು ಕರೆಯುವ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಲಭ್ಯವಾಗುತ್ತದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಸೂಚಿಸಲಾದ ಆಯ್ಕೆಗಳನ್ನು ಹೊಂದಿಸದಿದ್ದರೆ, glibc ವಿನಂತಿಗಳಲ್ಲಿ AD ಫ್ಲ್ಯಾಗ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದಿಲ್ಲ ಮತ್ತು ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅದನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ, DNSSEC ಪರಿಶೀಲನೆಗಳು ಕಾಣೆಯಾಗಿದೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ;
  • Glibc ಗಾಗಿ ವರ್ಕಿಂಗ್ ಸಿಸ್ಟಮ್ ಕರೆ ಬೈಂಡಿಂಗ್‌ಗಳನ್ನು ನಿರ್ಮಿಸಲು ಇನ್ನು ಮುಂದೆ Linux ಕರ್ನಲ್ ಹೆಡರ್ ಫೈಲ್‌ಗಳನ್ನು ಸ್ಥಾಪಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ಅಪವಾದವೆಂದರೆ 64-ಬಿಟ್ RISC-V ಆರ್ಕಿಟೆಕ್ಚರ್;
  • ನಿವಾರಿಸಲಾಗಿದೆ ದುರ್ಬಲತೆ CVE-2019-19126, ಇದು ರಕ್ಷಣೆಯನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ
    ಸೆಟ್ಯೂಡ್ ಫ್ಲ್ಯಾಗ್‌ನೊಂದಿಗೆ ಪ್ರೋಗ್ರಾಂಗಳಲ್ಲಿ ASLR ಮತ್ತು LD_PREFER_MAP_32BIT_EXEC ಪರಿಸರ ವೇರಿಯಬಲ್‌ನ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್ ಮೂಲಕ ಲೋಡ್ ಮಾಡಲಾದ ಲೈಬ್ರರಿಗಳಲ್ಲಿ ವಿಳಾಸ ವಿನ್ಯಾಸವನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ.

ಹೊಂದಾಣಿಕೆಯನ್ನು ಮುರಿಯುವ ಬದಲಾವಣೆಗಳು:

  • totalorder (), totalordermag (), ಮತ್ತು ಇತರ ಫ್ಲೋಟಿಂಗ್-ಪಾಯಿಂಟ್ ಪ್ರಕಾರಗಳಿಗೆ ಇದೇ ರೀತಿಯ ಕಾರ್ಯಗಳು ಈಗ ಸ್ಥಿತಿಯಲ್ಲಿ ಮೌಲ್ಯಗಳನ್ನು ಪರಿವರ್ತಿಸುವ ಎಚ್ಚರಿಕೆಗಳನ್ನು ತೊಡೆದುಹಾಕಲು ಪಾಯಿಂಟರ್‌ಗಳನ್ನು ವಾದಗಳಾಗಿ ಸ್ವೀಕರಿಸುತ್ತವೆ ನಾ.ಎನ್, ಭವಿಷ್ಯದ C18661X ಮಾನದಂಡಕ್ಕಾಗಿ ಪ್ರಸ್ತಾಪಿಸಲಾದ TS 1-2 ರ ಶಿಫಾರಸುಗಳಿಗೆ ಅನುಗುಣವಾಗಿ.
    ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳನ್ನು ನೇರವಾಗಿ ರವಾನಿಸುವ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಎಕ್ಸಿಕ್ಯೂಟಬಲ್‌ಗಳು ಮಾರ್ಪಾಡುಗಳಿಲ್ಲದೆ ಚಾಲನೆಯಲ್ಲಿ ಮುಂದುವರಿಯುತ್ತದೆ;

  • glibc-linked ಬೈನರಿಗಳಿಗೆ ದೀರ್ಘ-ಅಸಮ್ಮತಿಗೊಳಿಸಲಾದ stime ಕಾರ್ಯವು ಇನ್ನು ಮುಂದೆ ಲಭ್ಯವಿರುವುದಿಲ್ಲ ಮತ್ತು ಅದರ ವ್ಯಾಖ್ಯಾನವನ್ನು time.h ನಿಂದ ತೆಗೆದುಹಾಕಲಾಗಿದೆ. ಸಿಸ್ಟಮ್ ಸಮಯವನ್ನು ಹೊಂದಿಸಲು, clock_settime ಕಾರ್ಯವನ್ನು ಬಳಸಿ. ಭವಿಷ್ಯದಲ್ಲಿ, ನಾವು ಅಸಮ್ಮತಿಸಿದ ftime ಕಾರ್ಯವನ್ನು ತೆಗೆದುಹಾಕಲು ಯೋಜಿಸುತ್ತೇವೆ, ಹಾಗೆಯೇ sys/timeb.h ಹೆಡರ್ ಫೈಲ್ (ftime ಬದಲಿಗೆ gettimeofday ಅಥವಾ clock_gettime ಅನ್ನು ಬಳಸಬೇಕು);
  • gettimeofday ಕಾರ್ಯವು ಇನ್ನು ಮುಂದೆ ಸಿಸ್ಟಮ್-ವೈಡ್ ಸಮಯ ವಲಯದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ರವಾನಿಸುವುದಿಲ್ಲ (ಈ ವೈಶಿಷ್ಟ್ಯವು 4.2-BSD ದಿನಗಳಲ್ಲಿ ಪ್ರಸ್ತುತವಾಗಿತ್ತು ಮತ್ತು ಹಲವು ವರ್ಷಗಳಿಂದ ಅಸಮ್ಮತಿಸಲಾಗಿದೆ). 'tzp' ಆರ್ಗ್ಯುಮೆಂಟ್ ಅನ್ನು ಈಗ ಶೂನ್ಯ ಪಾಯಿಂಟರ್ ಅನ್ನು ರವಾನಿಸಬೇಕು ಮತ್ತು ಪ್ರಸ್ತುತ ಸಮಯವನ್ನು ಆಧರಿಸಿ ಸಮಯ ವಲಯ ಮಾಹಿತಿಯನ್ನು ಪಡೆಯಲು ಸ್ಥಳೀಯ ಸಮಯ() ಕಾರ್ಯವನ್ನು ಬಳಸಬೇಕು. ಶೂನ್ಯವಲ್ಲದ 'tzp' ಆರ್ಗ್ಯುಮೆಂಟ್‌ನೊಂದಿಗೆ gettimeofday ಗೆ ಕರೆ ಮಾಡುವುದರಿಂದ ಸಮಯವಲಯ ರಚನೆಯಲ್ಲಿ ಖಾಲಿ tz_minuteswest ಮತ್ತು tz_dsttime ಕ್ಷೇತ್ರಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. gettimeofday ಕಾರ್ಯವನ್ನು POSIX ಅಡಿಯಲ್ಲಿ ಅಸಮ್ಮತಿಸಲಾಗಿದೆ (Gettimeofday ಬದಲಿಗೆ clock_gettime ಅನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ), ಆದರೆ glibc ನಿಂದ ಅದನ್ನು ತೆಗೆದುಹಾಕಲು ಯಾವುದೇ ಯೋಜನೆಗಳಿಲ್ಲ;
  • settimeofday ಇನ್ನು ಮುಂದೆ ಸಮಯ ಮತ್ತು ಸಮಯವನ್ನು ಸರಿಪಡಿಸುವ ಆಫ್‌ಸೆಟ್ ಅನ್ನು ಹೊಂದಿಸಲು ಪ್ಯಾರಾಮೀಟರ್‌ಗಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ರವಾನಿಸುವುದನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. settimeofday ಗೆ ಕರೆ ಮಾಡುವಾಗ, ವಾದಗಳಲ್ಲಿ ಒಂದನ್ನು (ಸಮಯ ಅಥವಾ ಆಫ್‌ಸೆಟ್) ಈಗ ಶೂನ್ಯಕ್ಕೆ ಹೊಂದಿಸಬೇಕು, ಇಲ್ಲದಿದ್ದರೆ EINVAL ದೋಷದೊಂದಿಗೆ ಫಂಕ್ಷನ್ ಕರೆ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ. gettimeofday ನಂತೆ, settimeofday ಫಂಕ್ಷನ್ ಅನ್ನು POSIX ನಲ್ಲಿ ಅಸಮ್ಮತಿಸಲಾಗಿದೆ ಮತ್ತು clock_settime ಫಂಕ್ಷನ್ ಅಥವಾ adjtime ಫ್ಯಾಮಿಲಿ ಫಂಕ್ಷನ್‌ಗಳಿಂದ ಬದಲಾಯಿಸಲು ಶಿಫಾರಸು ಮಾಡಲಾಗಿದೆ;
  • SPARC ISA v7 ಆರ್ಕಿಟೆಕ್ಚರ್‌ಗೆ ಬೆಂಬಲವನ್ನು ನಿಲ್ಲಿಸಲಾಗಿದೆ (ಸದ್ಯಕ್ಕೆ v8 ಬೆಂಬಲವನ್ನು ಉಳಿಸಿಕೊಳ್ಳಲಾಗಿದೆ, ಆದರೆ LEON ಪ್ರೊಸೆಸರ್‌ಗಳಂತಹ CAS ಸೂಚನೆಗಳನ್ನು ಬೆಂಬಲಿಸುವ ಪ್ರೊಸೆಸರ್‌ಗಳಿಗೆ ಮಾತ್ರ, SuperSPARC ಪ್ರೊಸೆಸರ್‌ಗಳಲ್ಲ).
  • "ನಲ್ಲಿ ಜೋಡಿಸುವಿಕೆ ವಿಫಲವಾದರೆಸೋಮಾರಿಯಾದ", ಇದರಲ್ಲಿ ಲಿಂಕರ್ ಫಂಕ್ಷನ್‌ಗೆ ಮೊದಲ ಕರೆ ಮಾಡುವವರೆಗೆ ಫಂಕ್ಷನ್‌ನ ಚಿಹ್ನೆಗಳನ್ನು ಹುಡುಕುವುದಿಲ್ಲ, dlopen ಕಾರ್ಯವು ಈಗ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಕೊನೆಗೊಳಿಸಲು ಒತ್ತಾಯಿಸುತ್ತದೆ (ಹಿಂದೆ ವಿಫಲವಾದಾಗ NULL ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ);
  • MIPS ಹಾರ್ಡ್-ಫ್ಲೋಟ್ ABI ಗಾಗಿ, ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಸ್ಟಾಕ್ ಅನ್ನು ಈಗ ಬಳಸಲಾಗುತ್ತದೆ, ಬಿಲ್ಡ್ ಲಿನಕ್ಸ್ ಕರ್ನಲ್ 4.8+ ನ ಬಳಕೆಯನ್ನು “-enable-kernel=4.8.0” ಪ್ಯಾರಾಮೀಟರ್ ಮೂಲಕ ಸ್ಪಷ್ಟವಾಗಿ ನಿರ್ಬಂಧಿಸದ ಹೊರತು (4.8 ವರೆಗಿನ ಕರ್ನಲ್‌ಗಳೊಂದಿಗೆ, ಕ್ರ್ಯಾಶ್‌ಗಳು ಕೆಲವು MIPS ಸಂರಚನೆಗಳಿಗಾಗಿ ಗಮನಿಸಲಾಗಿದೆ);
  • ಟೈಮ್ ಮ್ಯಾನಿಪ್ಯುಲೇಷನ್‌ಗೆ ಸಂಬಂಧಿಸಿದ ಸಿಸ್ಟಂ ಕರೆಗಳ ಸುತ್ತಲಿನ ಬೈಂಡಿಂಗ್‌ಗಳನ್ನು time64 ಸಿಸ್ಟಮ್ ಕರೆಯನ್ನು ಬಳಸಲು ಸರಿಸಲಾಗಿದೆ (32-ಬಿಟ್ ಸಿಸ್ಟಮ್‌ಗಳಲ್ಲಿ, glibc ಮೊದಲು 64-ಬಿಟ್ ಟೈಮ್ ಪ್ರಕಾರವನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುವ ಹೊಸ ಸಿಸ್ಟಮ್ ಕರೆಗಳನ್ನು ಪ್ರಯತ್ನಿಸುತ್ತದೆ ಮತ್ತು ಯಾವುದೂ ಇಲ್ಲದಿದ್ದರೆ, ಬೀಳುತ್ತದೆ ಹಳೆಯ 32-ಬಿಟ್ ಕರೆಗಳಿಗೆ ಹಿಂತಿರುಗಿ).

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ