diff --git a/inc/qcbor/qcbor_common.h b/inc/qcbor/qcbor_common.h
index 195b418..752d149 100644
--- a/inc/qcbor/qcbor_common.h
+++ b/inc/qcbor/qcbor_common.h
@@ -31,6 +31,7 @@
  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  * ========================================================================= */
 
+
 #ifndef qcbor_common_h
 #define qcbor_common_h
 
diff --git a/inc/qcbor/qcbor_decode.h b/inc/qcbor/qcbor_decode.h
index 98a76eb..14b8f15 100644
--- a/inc/qcbor/qcbor_decode.h
+++ b/inc/qcbor/qcbor_decode.h
@@ -510,6 +510,7 @@
 
    } val;
 
+   /** Union holding the different label types selected based on @c uLabelType */
    union {
       /** The label for @c uLabelType for @ref QCBOR_TYPE_INT64 */
       int64_t     int64;
diff --git a/src/qcbor_decode.c b/src/qcbor_decode.c
index 9c5d2d2..7b8ce5c 100644
--- a/src/qcbor_decode.c
+++ b/src/qcbor_decode.c
@@ -982,18 +982,18 @@
          goto Done;
       }
 
+      if(bAllocate) {
 #ifndef QCBOR_DISABLE_INDEFINITE_LENGTH_STRINGS
-       if(bAllocate) {
-          /* --- Put string in allocated memory --- */
+         /* --- Put string in allocated memory --- */
 
-          /* Note that this is not where allocation to coalesce
-           * indefinite-length strings is done. This is for when the
-           * caller has requested all strings be allocated. Disabling
-           * indefinite length strings also disables this allocate-all
-           * option.
-           */
+         /* Note that this is not where allocation to coalesce
+          * indefinite-length strings is done. This is for when the
+          * caller has requested all strings be allocated. Disabling
+          * indefinite length strings also disables this allocate-all
+          * option.
+          */
 
-          if(pMe->StringAllocator.pfAllocator == NULL) {
+         if(pMe->StringAllocator.pfAllocator == NULL) {
             uReturn = QCBOR_ERR_NO_STRING_ALLOCATOR;
             goto Done;
          }
@@ -1004,14 +1004,13 @@
          }
          pDecodedItem->val.string = UsefulBuf_Copy(NewMem, Bytes);
          pDecodedItem->uDataAlloc = 1;
-         goto Done;
-      }
 #else
-      (void)bAllocate;
-#endif /* QCBOR_DISABLE_INDEFINITE_LENGTH_STRINGS */
-
-      /* --- Normal case with no string allocator --- */
-      pDecodedItem->val.string = Bytes;
+         uReturn = QCBOR_ERR_INDEF_LEN_STRINGS_DISABLED;
+#endif /*  ! QCBOR_DISABLE_INDEFINITE_LENGTH_STRINGS */
+      } else {
+         /* --- Normal case with no string allocator --- */
+         pDecodedItem->val.string = Bytes;
+      }
    }
 
 Done:
@@ -1074,7 +1073,7 @@
       pDecodedItem->val.uCount = QCBOR_COUNT_INDICATES_INDEFINITE_LENGTH;
 #else /* QCBOR_DISABLE_INDEFINITE_LENGTH_ARRAYS */
       uReturn = QCBOR_ERR_INDEF_LEN_ARRAYS_DISABLED;
-#endif /* QCBOR_DISABLE_INDEFINITE_LENGTH_ARRAYS */
+#endif /* ! QCBOR_DISABLE_INDEFINITE_LENGTH_ARRAYS */
    } else {
 
 #ifndef QCBOR_DISABLE_NON_INTEGER_LABELS
@@ -1315,7 +1314,7 @@
  * @retval QCBOR_ERR_ARRAY_DECODE_TOO_LONG   Too many items in array/map.
  * @retval QCBOR_ERR_TAGS_DISABLED           QCBOR_DISABLE_TAGS is defined.
  *
- * This decodes the most primitive / atomic data item. It does no
+ * This decodes the most primitive/atomic data item. It does no
  * combining of data items.
  */
 static QCBORError
@@ -1329,7 +1328,7 @@
    int      nAdditionalInfo = 0;
 
    /* Decode the "head" that every CBOR item has into the major type,
-    * length and the additional info.
+    * argument and the additional info.
     */
    uReturn = QCBOR_Private_DecodeHead(&(pMe->InBuf), &nMajorType, &uArgument, &nAdditionalInfo);
    if(uReturn != QCBOR_SUCCESS) {
diff --git a/test/qcbor_decode_tests.c b/test/qcbor_decode_tests.c
index 45e4eab..ea4d6ce 100644
--- a/test/qcbor_decode_tests.c
+++ b/test/qcbor_decode_tests.c
@@ -5324,7 +5324,9 @@
       Item1.val.int64 != 42 ||
       Item1.uDataAlloc != 0 ||
       Item1.uLabelAlloc == 0 ||
-      UsefulBufCompareToSZ(Item1.label.string, "first integer")) {
+      UsefulBufCompareToSZ(Item1.label.string, "first integer") ||
+      Item1.label.string.ptr < Pool.ptr ||
+      Item1.label.string.ptr > (const void *)((const uint8_t *)Pool.ptr + Pool.len)) {
       return -4;
    }
 
