comparison and free fixes
diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c
index bdf9b85..942fc6b 100644
--- a/skeletons/OCTET_STRING.c
+++ b/skeletons/OCTET_STRING.c
@@ -1739,8 +1739,10 @@
         break;
     case ASFM_FREE_UNDERLYING_AND_RESET:
         memset(sptr, 0,
-               ((const asn_OCTET_STRING_specifics_t *)(td->specifics))
-                   ->struct_size);
+               td->specifics
+                   ? ((const asn_OCTET_STRING_specifics_t *)(td->specifics))
+                         ->struct_size
+                   : sizeof(OCTET_STRING_t));
         break;
     }
 }
@@ -1828,7 +1830,7 @@
                 return 0;
             }
         } else {
-            return ret;
+            return ret < 0 ? -1 : 1;
         }
     } else if(!a && !b) {
         return 0;