diff --git a/libsframe/sframe.c b/libsframe/sframe.c
index 4742e4550c2..51b6bf57c05 100644
--- a/libsframe/sframe.c
+++ b/libsframe/sframe.c
@@ -470,8 +470,7 @@ sframe_fre_start_addr_size (uint32_t fre_type)
       addr_size = 4;
       break;
     default:
-      /* No other value is expected.  */
-      sframe_assert (0);
+      addr_size = 0;
       break;
     }
   return addr_size;
@@ -534,6 +533,8 @@ sframe_fre_entry_size (sframe_frame_row_entry *frep, uint32_t fre_type)
 
   uint8_t fre_info = frep->fre_info;
   size_t addr_size = sframe_fre_start_addr_size (fre_type);
+  if (addr_size == 0)
+    return 0;
 
   return (addr_size + sizeof (frep->fre_info)
 	  + sframe_fre_datawords_bytes_size (fre_info));
@@ -549,6 +550,8 @@ sframe_buf_fre_entry_size (const char *fre_buf, uint32_t fre_type)
     return 0;
 
   size_t addr_size = sframe_fre_start_addr_size (fre_type);
+  if (addr_size == 0)
+    return 0;
   uint8_t fre_info = *(uint8_t *)(fre_buf + addr_size);
 
   return (addr_size + sizeof (fre_info)
@@ -707,7 +710,7 @@ flip_fre (char *fp, size_t fp_size, uint32_t fre_type, size_t *fre_size)
     return sframe_set_errno (&err, SFRAME_ERR_INVAL);
 
   addr_size = sframe_fre_start_addr_size (fre_type);
-  if (addr_size > fp_size)
+  if (addr_size == 0 || addr_size > fp_size)
     return SFRAME_ERR;
   flip_fre_start_address (fp, fre_type);
 
