sblim-cmpi-base/SOURCES/sblim-cmpi-base-1.6.4-fix-possible-null-dereference.patch

64 lines
2.6 KiB
Diff
Raw Normal View History

2021-11-02 10:20:33 +00:00
diff -up sblim-cmpi-base-1.6.4/OSBase_OperatingSystem.c.orig sblim-cmpi-base-1.6.4/OSBase_OperatingSystem.c
--- sblim-cmpi-base-1.6.4/OSBase_OperatingSystem.c.orig 2020-02-04 13:55:31.565801631 +0100
+++ sblim-cmpi-base-1.6.4/OSBase_OperatingSystem.c 2020-02-04 13:58:39.514189758 +0100
@@ -88,13 +88,21 @@ int get_operatingsystem_data( struct cim
bytes_read = fread(buf, 1, sizeof(buf)-1, fhd);
buf[bytes_read] = 0; /* safeguard end of buffer */
ptr = strstr(buf,"MemTotal");
- sscanf(ptr, "%*s %lld", &((*sptr)->totalPhysMem));
+ if( ptr != NULL ) {
+ sscanf(ptr, "%*s %lld", &((*sptr)->totalPhysMem));
+ }
ptr = strstr(buf,"MemFree");
- sscanf(ptr, "%*s %lld", &((*sptr)->freePhysMem));
+ if( ptr != NULL ) {
+ sscanf(ptr, "%*s %lld", &((*sptr)->freePhysMem));
+ }
ptr = strstr(buf,"SwapTotal");
- sscanf(ptr, "%*s %lld", &((*sptr)->totalSwapMem));
+ if( ptr != NULL ) {
+ sscanf(ptr, "%*s %lld", &((*sptr)->totalSwapMem));
+ }
ptr = strstr(buf,"SwapFree");
- sscanf(ptr, "%*s %lld", &((*sptr)->freeSwapMem));
+ if( ptr != NULL ) {
+ sscanf(ptr, "%*s %lld", &((*sptr)->freeSwapMem));
+ }
fclose(fhd);
}
/* TotalVirtualMemorySize */
diff -up sblim-cmpi-base-1.6.4/OSBase_OperatingSystemStatisticalData.c.orig sblim-cmpi-base-1.6.4/OSBase_OperatingSystemStatisticalData.c
--- sblim-cmpi-base-1.6.4/OSBase_OperatingSystemStatisticalData.c.orig 2020-02-04 13:55:31.557801615 +0100
+++ sblim-cmpi-base-1.6.4/OSBase_OperatingSystemStatisticalData.c 2020-02-04 14:09:01.613474453 +0100
@@ -109,13 +109,15 @@ int get_queue_info_24(struct os_statisti
if ((f = fopen("/proc/loadavg","r")) != NULL) {
fgets(buf,127,f);
strptr = strstr(buf,"/");
- *strptr = '\0';
- while (*strptr != ' ') {
- strptr--;
+ if (strptr != NULL) {
+ *strptr = '\0';
+ while (*strptr != ' ') {
+ strptr--;
+ }
+ stats->run_queue_length = atoll(strptr);
+ res = 1;
}
- stats->run_queue_length = atoll(strptr);
fclose(f);
- res = 1;
} else {
_OSBASE_TRACE(1,("get_queue_info: could not open /proc/loadavg: %s",strerror(errno)));
}
@@ -173,7 +175,8 @@ int get_cpu_page_data_24(struct os_stati
*
* page <in> <out>
*/
- if (sscanf(strptr,"page %lld %lld",&pages_in, &pages_out) == 2) {
+ if (strptr != NULL &&
+ sscanf(strptr,"page %lld %lld",&pages_in, &pages_out) == 2) {
stats->pages_in = pages_in;
stats->pages_out = pages_out;
res = 1;