Add null checking for filedescriptor helpers.

- Check for a null descriptor passed in to
  jniGetFdFromFileDescriptor
- Make sure we don't segfault if we can't allocate
  a new java object in jniGetFileDescriptorFromFd.

Change-Id: Ic420ce76695f9526833dac98e1813c37c167306d
diff --git a/JNIHelp.cpp b/JNIHelp.cpp
index b010d07..fab95df 100644
--- a/JNIHelp.cpp
+++ b/JNIHelp.cpp
@@ -308,14 +308,22 @@
     JNIEnv* e = reinterpret_cast<JNIEnv*>(env);
     static jmethodID ctor = e->GetMethodID(JniConstants::fileDescriptorClass, "<init>", "()V");
     jobject fileDescriptor = (*env)->NewObject(e, JniConstants::fileDescriptorClass, ctor);
-    jniSetFileDescriptorOfFD(env, fileDescriptor, fd);
+    // NOTE: NewObject ensures that an OutOfMemoryError will be seen by the Java
+    // caller if the alloc fails, so we just return NULL when that happens.
+    if (fileDescriptor != NULL)  {
+        jniSetFileDescriptorOfFD(env, fileDescriptor, fd);
+    }
     return fileDescriptor;
 }
 
 int jniGetFDFromFileDescriptor(C_JNIEnv* env, jobject fileDescriptor) {
     JNIEnv* e = reinterpret_cast<JNIEnv*>(env);
     static jfieldID fid = e->GetFieldID(JniConstants::fileDescriptorClass, "descriptor", "I");
-    return (*env)->GetIntField(e, fileDescriptor, fid);
+    if (fileDescriptor != NULL) {
+        return (*env)->GetIntField(e, fileDescriptor, fid);
+    } else {
+        return -1;
+    }
 }
 
 void jniSetFileDescriptorOfFD(C_JNIEnv* env, jobject fileDescriptor, int value) {