diff --git a/keystore/IKeystoreService.cpp b/keystore/IKeystoreService.cpp
index 9b4590e..240ec1f 100644
--- a/keystore/IKeystoreService.cpp
+++ b/keystore/IKeystoreService.cpp
@@ -636,10 +636,14 @@
             size_t outSize = 0;
             int32_t ret = sign(name, (const uint8_t*) in, (size_t) inSize, (uint8_t**) &out, &outSize);
             reply->writeNoException();
-            reply->writeInt32(outSize);
-            void* buf = reply->writeInplace(outSize);
-            memcpy(buf, out, outSize);
-            free(out);
+            if (outSize > 0 && out != NULL) {
+                reply->writeInt32(outSize);
+                void* buf = reply->writeInplace(outSize);
+                memcpy(buf, out, outSize);
+                free(out);
+            } else {
+                reply->writeInt32(0);
+            }
             reply->writeInt32(ret);
             return NO_ERROR;
         } break;
@@ -675,13 +679,17 @@
             size_t outSize = 0;
             int32_t ret = get_pubkey(name, (unsigned char**) &out, &outSize);
             reply->writeNoException();
-            reply->writeInt32(outSize);
-            void* buf = reply->writeInplace(outSize);
-            memcpy(buf, out, outSize);
-            free(out);
+            if (outSize > 0 && out != NULL) {
+                reply->writeInt32(outSize);
+                void* buf = reply->writeInplace(outSize);
+                memcpy(buf, out, outSize);
+                free(out);
+            } else {
+                reply->writeInt32(0);
+            }
             reply->writeInt32(ret);
             return NO_ERROR;
-        }
+        } break;
         case DEL_KEY: {
             CHECK_INTERFACE(IKeystoreService, data, reply);
             String16 name = data.readString16();
