Print this page
11472 fix libdemangle rust changes

@@ -237,11 +237,11 @@
                 return (B_FALSE);
         }
 
         rem = sv_remaining(&sv);
 
-        if (rem < len || len == SIZE_MAX) {
+        if (rem < len) {
                 st->rds_error = EINVAL;
                 return (B_FALSE);
         }
 
         /* Is this the last segment before the terminating E? */

@@ -382,17 +382,15 @@
         sv_init_sv(svp, &sv);
         return (B_TRUE);
 }
 
 /*
- * A 10 digit value would imply a name 1Gb or larger in size.  It seems
- * unlikely to the point of absurdity any such value could every possibly
- * be valid (or even have compiled properly).  This also prevents the
- * uint64_t conversion from possibly overflowing since the value must always
- * be below 10 * UINT32_MAX.
+ * We have to pick an arbitrary limit here; 999,999,999 fits comfortably
+ * within an int32_t, so let's go with that, as it seems unlikely we'd
+ * ever see a larger value in context.
  */
-#define MAX_DIGITS 10
+#define MAX_DIGITS 9
 
 static boolean_t
 rustdem_parse_num(rustdem_state_t *restrict st, strview_t *restrict svp,
     uint64_t *restrict valp)
 {