public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/sblim-sfcb] rawhide: Fix multiple issues discovered by static analysis
@ 2026-07-22  8:52 Vitezslav Crhonek
  0 siblings, 0 replies; only message in thread
From: Vitezslav Crhonek @ 2026-07-22  8:52 UTC (permalink / raw)
  To: git-commits

A new commit has been pushed.

Repo   : rpms/sblim-sfcb
Branch : rawhide
Commit : a9d4d30810230c458b0c8c383572088937f19b79
Author : Vitezslav Crhonek <vcrhonek@redhat.com>
Date   : 2026-07-22T10:51:18+02:00
Stats  : +542/-1 in 7 file(s)
URL    : https://src.fedoraproject.org/rpms/sblim-sfcb/c/a9d4d30810230c458b0c8c383572088937f19b79?branch=rawhide

Log:
Fix multiple issues discovered by static analysis

---
diff --git a/sblim-sfcb-1.4.9-fix-double-free.patch b/sblim-sfcb-1.4.9-fix-double-free.patch
new file mode 100644
index 0000000..113302f
--- /dev/null
+++ b/sblim-sfcb-1.4.9-fix-double-free.patch
@@ -0,0 +1,20 @@
+diff --git a/constClass.c b/constClass.c
+index 6d53e20..03462be 100644
+--- a/constClass.c
++++ b/constClass.c
+@@ -437,6 +437,7 @@ getPropQualifier(CMPIConstClass * cc, const char *cp, const char *cpq,
+   }
+ 
+   for (i = 0; i < num; i++) {
++    n = NULL;  /* Reset to prevent double-free if next iteration fails */
+     if (ClClassGetPropQualifierAt(cls, p - 1, i, &rv, &n) == 0
+         && strcasecmp(cpq, n) == 0) {
+       if (rv.type == CMPI_chars) {
+@@ -457,6 +458,7 @@ getPropQualifier(CMPIConstClass * cc, const char *cp, const char *cpq,
+     }
+     if (n && isMallocedStrBuf(&cls->hdr)) {
+       free(n);
++      n = NULL;  /* Reset after free */
+     }
+   }
+   if (rc) {

diff --git a/sblim-sfcb-1.4.9-fix-ftell-overflow.patch b/sblim-sfcb-1.4.9-fix-ftell-overflow.patch
new file mode 100644
index 0000000..bfc1c6d
--- /dev/null
+++ b/sblim-sfcb-1.4.9-fix-ftell-overflow.patch
@@ -0,0 +1,29 @@
+diff --git a/fileRepository.c b/fileRepository.c
+index 33a1ce2..7f2914d 100644
+--- a/fileRepository.c
++++ b/fileRepository.c
+@@ -519,8 +519,24 @@ getIndex(const char *ns, const char *cls, int elen, int mki,
+   else {
+     fseek(bi->fx, 0, SEEK_END);
+     bi->dSize = ftell(bi->fx);
++
++    /* Check for ftell() error (returns -1 on failure) */
++    if (bi->dSize < 0) {
++      mlogf(M_ERROR, M_SHOW,
++            "--- ftell() failed on index file %s: %s\n",
++            bi->fnx, strerror(errno));
++      freeBlobIndex(&bi, 1);
++      *bip = NULL;
++      return 0;
++    }
++
+     bi->aSize = bi->dSize + elen;
+     bi->index = malloc(bi->aSize);
++    if (!bi->index) {
++      freeBlobIndex(&bi, 1);
++      *bip = NULL;
++      return 0;
++    }
+     fseek(bi->fx, 0, SEEK_SET);
+     fread(bi->index, bi->dSize, 1, bi->fx);
+     bi->index[bi->dSize] = 0;

diff --git a/sblim-sfcb-1.4.9-fix-incorrect-free.patch b/sblim-sfcb-1.4.9-fix-incorrect-free.patch
new file mode 100644
index 0000000..7a18859
--- /dev/null
+++ b/sblim-sfcb-1.4.9-fix-incorrect-free.patch
@@ -0,0 +1,16 @@
+diff --git a/classProviderMem.c b/classProviderMem.c
+index d6dc465..ff6b081 100644
+--- a/classProviderMem.c
++++ b/classProviderMem.c
+@@ -280,9 +280,8 @@ cpyClass(ClClass * cl, CMPIConstClass * cc)
+   for (i = 0, m = ClClassGetPropertyCount(ccl); i < m; i++) {
+     ClClassGetPropertyAt(ccl, i, &d, &name, &quals, &refName);
+     propId = ClClassAddProperty(cl, name, d, refName);
+-    if (refName) {
+-      free(refName);
+-    }
++    /* Note: refName points into ccl's string buffer, not separately allocated.
++     * ClClassAddProperty copies the string, so no free needed. */
+     prop =
+         ((ClProperty *) ClObjectGetClSection(&cl->hdr, &cl->properties)) +
+         propId - 1;

diff --git a/sblim-sfcb-1.4.9-fix-mof-buffer-overflow.patch b/sblim-sfcb-1.4.9-fix-mof-buffer-overflow.patch
new file mode 100644
index 0000000..a83d157
--- /dev/null
+++ b/sblim-sfcb-1.4.9-fix-mof-buffer-overflow.patch
@@ -0,0 +1,31 @@
+diff --git a/mofpp.c b/mofpp.c
+index 98b7396..f91def9 100644
+--- a/mofpp.c
++++ b/mofpp.c
+@@ -62,11 +62,23 @@ incOK(char *str, char **s, char **e, char **ifn, FILE ** f)
+             **e = 0;
+             if (str[0] != '\\' && str[0] != '/') {
+               /* str is relative path */
+-              strcpy(fn,path);
+-              strcat(fn,str);
++              size_t path_len = strlen(path);
++              size_t str_len = strlen(str);
++              /* Validate combined path fits in buffer */
++              if (path_len + str_len >= sizeof(fn)) {
++                fprintf(stderr, "mofpp: path too long: %s%s\n", path, str);
++                **e = ch;
++                return -1;
++              }
++              snprintf(fn, sizeof(fn), "%s%s", path, str);
+             } else {
+               /* str is absolute path */
+-              strcpy(fn, str);
++              if (strlen(str) >= sizeof(fn)) {
++                fprintf(stderr, "mofpp: path too long: %s\n", str);
++                **e = ch;
++                return -1;
++              }
++              snprintf(fn, sizeof(fn), "%s", str);
+             }
+ 
+             *ifn = strdup(fn);

diff --git a/sblim-sfcb-1.4.9-fix-query-buffer-overflow.patch b/sblim-sfcb-1.4.9-fix-query-buffer-overflow.patch
new file mode 100644
index 0000000..342e77d
--- /dev/null
+++ b/sblim-sfcb-1.4.9-fix-query-buffer-overflow.patch
@@ -0,0 +1,346 @@
+diff --git a/queryOperation.c b/queryOperation.c
+index b38f5a2..13a30b7 100644
+--- a/queryOperation.c
++++ b/queryOperation.c
+@@ -1115,11 +1115,32 @@ _ltEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ ltToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, (op->flag.invert ? " QL_GE " : " QL_LT "));
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = (op->flag.invert ? " QL_GE " : " QL_LT ");
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp
+@@ -1155,11 +1176,32 @@ _gtEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ gtToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, (op->flag.invert ? " QL_LE " : " QL_GT "));
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = (op->flag.invert ? " QL_LE " : " QL_GT ");
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp
+@@ -1195,11 +1237,32 @@ _leEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ leToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, (op->flag.invert ? " QL_GT " : " QL_LE "));
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = (op->flag.invert ? " QL_GT " : " QL_LE ");
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp
+@@ -1235,11 +1298,32 @@ _geEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ geToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, (op->flag.invert ? " QL_LT " : " QL_GE "));
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = (op->flag.invert ? " QL_LT " : " QL_GE ");
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp
+@@ -1275,11 +1359,32 @@ _eqEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ eqToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, (op->flag.invert ? " QL_NE " : " QL_EQ "));
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = (op->flag.invert ? " QL_NE " : " QL_EQ ");
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp
+@@ -1315,11 +1420,32 @@ _neEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ neToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, (op->flag.invert ? " QL_EQ " : " QL_NE "));
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = (op->flag.invert ? " QL_EQ " : " QL_NE ");
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp
+@@ -1355,11 +1481,32 @@ _isaEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ isaToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, (op->flag.invert ? " QL_NOT_ISA " : " QL_ISA "));
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = (op->flag.invert ? " QL_NOT_ISA " : " QL_ISA ");
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp
+@@ -1455,11 +1602,32 @@ _likeEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ likeToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, "QL_LIKE ");
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = "QL_LIKE ";
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp
+@@ -1504,11 +1672,32 @@ _notLikeEvaluate(QLOperation * op, QLPropertySource * source)
+ char           *
+ notLikeToString(QLOperation * op)
+ {
+-  char            str[512];
+-  strcpy(str, op->lhod->ft->toString(op->lhod));
+-  strcat(str, "QL_NOT_LIKE ");
+-  strcat(str, (op->rhod ? op->rhod->ft->toString(op->rhod) : "--"));
+-  return strdup(str);
++  char *ln = NULL;
++  char *rn = NULL;
++  char *result = NULL;
++  const char *op_str = "QL_NOT_LIKE ";
++  const char *rn_safe;
++  size_t len;
++
++  ln = op->lhod->ft->toString(op->lhod);
++  if (!ln)
++    return strdup("--");
++
++  if (op->rhod) {
++    rn = op->rhod->ft->toString(op->rhod);
++    rn_safe = rn ? rn : "--";
++  } else {
++    rn_safe = "--";
++  }
++
++  len = strlen(ln) + strlen(op_str) + strlen(rn_safe) + 1;
++  result = malloc(len);
++  if (result)
++    snprintf(result, len, "%s%s%s", ln, op_str, rn_safe);
++
++  free(ln);
++  free(rn);
++  return result ? result : strdup("--");
+ }
+ 
+ QLOp

diff --git a/sblim-sfcb-1.4.9-fix-tainted-size-allocation.patch b/sblim-sfcb-1.4.9-fix-tainted-size-allocation.patch
new file mode 100644
index 0000000..236d6c2
--- /dev/null
+++ b/sblim-sfcb-1.4.9-fix-tainted-size-allocation.patch
@@ -0,0 +1,78 @@
+diff --git a/classProvider.c b/classProvider.c
+index 9a8765b..16124a5 100644
+--- a/classProvider.c
++++ b/classProvider.c
+@@ -348,9 +348,8 @@ cpyClass(ClClass * cl, const CMPIConstClass * cc)
+     ClClassGetPropertyAt(ccl, i, &d, &name, &quals, &refName);
+ 
+     propId = ClClassAddProperty(cl, name, d, refName);
+-    if (refName) {
+-      free(refName);
+-    }
++    /* Note: refName points into ccl's string buffer, not separately allocated.
++     * ClClassAddProperty copies the string, so no free needed. */
+     prop =
+         ((ClProperty *) ClObjectGetClSection(&cl->hdr, &cl->properties)) +
+         propId - 1;
+@@ -601,7 +600,36 @@ removeClass(ClassRegister * cr, const char *clsName)
+     char           *buf = NULL;
+     char           *cn;
+ 
++    /* Validate hdr.size to prevent heap overflow from tainted file data */
++    if (hdr.size < sizeof(ClObjectHdr)) {
++      mlogf(M_ERROR, M_SHOW,
++            "--- %s contains record with invalid size %u - directory skipped %d\n",
++            cr->fn, hdr.size, __LINE__);
++      fclose(repold);
++      fclose(repnew);
++      unlink(tmpfn);
++      return;
++    }
++    if (hdr.size > 100 * 1024 * 1024) {  /* 100MB sanity limit */
++      mlogf(M_ERROR, M_SHOW,
++            "--- %s contains record with excessive size %u - directory skipped %d\n",
++            cr->fn, hdr.size, __LINE__);
++      fclose(repold);
++      fclose(repnew);
++      unlink(tmpfn);
++      return;
++    }
++
+     buf = malloc(hdr.size);
++    if (!buf) {
++      mlogf(M_ERROR, M_SHOW,
++            "--- malloc(%u) failed for %s - directory skipped %d\n",
++            hdr.size, cr->fn, __LINE__);
++      fclose(repold);
++      fclose(repnew);
++      unlink(tmpfn);
++      return;
++    }
+     *((ClObjectHdr *) buf) = hdr;
+ 
+     if (fread(buf + sizeof(hdr), 1, hdr.size - sizeof(hdr), repold) ==
+diff --git a/classProviderSf.c b/classProviderSf.c
+index 9b0de41..8e50e86 100644
+--- a/classProviderSf.c
++++ b/classProviderSf.c
+@@ -367,6 +367,20 @@ newClassRegister(char *fname)
+       return NULL;
+     }
+ 
++    /* Validate hdr.size to prevent heap overflow from tainted file data */
++    if (hdr.size < sizeof(ClObjectHdr)) {
++      mlogf(M_ERROR, M_SHOW,
++            "--- %s contains record with invalid size %u - directory skipped %d\n",
++            fin, hdr.size, __LINE__);
++      return NULL;
++    }
++    if (hdr.size > 100 * 1024 * 1024) {  /* 100MB sanity limit */
++      mlogf(M_ERROR, M_SHOW,
++            "--- %s contains record with excessive size %u - directory skipped %d\n",
++            fin, hdr.size, __LINE__);
++      return NULL;
++    }
++
+     buf = malloc(hdr.size);
+     if (buf == NULL) {
+       mlogf(M_ERROR, M_SHOW,

diff --git a/sblim-sfcb.spec b/sblim-sfcb.spec
index 62fa538..06be50e 100644
--- a/sblim-sfcb.spec
+++ b/sblim-sfcb.spec
@@ -8,7 +8,7 @@ Name: sblim-sfcb
 Summary: Small Footprint CIM Broker
 URL: http://sblim.wiki.sourceforge.net/
 Version: 1.4.9
-Release: 42%{?dist}
+Release: 43%{?dist}
 License: EPL-1.0
 Source0: http://downloads.sourceforge.net/sblim/%{name}-%{version}.tar.bz2
 Source1: sfcb.service
@@ -46,6 +46,18 @@ Patch10: sblim-sfcb-1.4.9-docdir-license.patch
 # Patch11: adds configuration options to specify fallback SSL cert/key pair
 #   and disables default ECDH ephemeral key generation
 Patch11: sblim-sfcb-1.4.9-post-quantum.patch
+# Patch12: fix stack buffer overflows in query operation toString functions
+Patch12: sblim-sfcb-1.4.9-fix-query-buffer-overflow.patch
+# Patch13: fix stack buffer overflow in MOF preprocessor include handling
+Patch13: sblim-sfcb-1.4.9-fix-mof-buffer-overflow.patch
+# Patch14: fix heap overflow from tainted size in class repository loading
+Patch14: sblim-sfcb-1.4.9-fix-tainted-size-allocation.patch
+# Patch15: fix integer overflow from unchecked ftell return value
+Patch15: sblim-sfcb-1.4.9-fix-ftell-overflow.patch
+# Patch16: fix double-free in property qualifier iteration
+Patch16: sblim-sfcb-1.4.9-fix-double-free.patch
+# Patch17: fix incorrect free of non-allocated pointer
+Patch17: sblim-sfcb-1.4.9-fix-incorrect-free.patch
 Provides: cim-server = 0
 Requires: cim-schema
 Requires: sblim-sfcCommon
@@ -87,6 +99,12 @@ Programming Interface (CMPI).
 %patch -P9 -p1 -b .fix-ppc-optimization-level
 %patch -P10 -p1 -b .docdir-license
 %patch -P11 -p1 -b .post-quantum
+%patch -P12 -p1 -b .fix-query-buffer-overflow
+%patch -P13 -p1 -b .fix-mof-buffer-overflow
+%patch -P14 -p1 -b .fix-tainted-size-allocation
+%patch -P15 -p1 -b .fix-ftell-overflow
+%patch -P16 -p1 -b .fix-double-free
+%patch -P17 -p1 -b .fix-incorrect-free
 
 # Create a sysusers.d config file
 cat >sblim-sfcb.sysusers.conf <<EOF
@@ -155,6 +173,9 @@ fi
 %{_tmpfilesdir}/sblim-sfcb.conf
 
 %changelog
+* Wed Jul 22 2026 Vitezslav Crhonek <vcrhonek@redhat.com> - 1.4.9-43
+- Fix multiple issues discovered by static analysis
+
 * Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.9-42
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-22  8:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-22  8:52 [rpms/sblim-sfcb] rawhide: Fix multiple issues discovered by static analysis Vitezslav Crhonek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox