gralloc: Add missing va_end()

Add missing va_end() and additionally extra protection in the
deconstructor in case of use after free.

Bug: 30483149
Change-Id: Ib28c6312b67654e19d89c7b9acf03f26a8640ad3
diff --git a/msm8909/libgralloc/gralloc_priv.h b/msm8909/libgralloc/gralloc_priv.h
index 2d19517..6295fb0 100644
--- a/msm8909/libgralloc/gralloc_priv.h
+++ b/msm8909/libgralloc/gralloc_priv.h
@@ -248,7 +248,9 @@
             numFds = sNumFds;
         }
         ~private_handle_t() {
+            base_metadata = 0;
             magic = 0;
+            fd_metadata = 0;
         }
 
         bool usesPhysicallyContiguousMemory() {
diff --git a/msm8909/libgralloc/mapper.cpp b/msm8909/libgralloc/mapper.cpp
index ba8f5be..99d309c 100644
--- a/msm8909/libgralloc/mapper.cpp
+++ b/msm8909/libgralloc/mapper.cpp
@@ -365,6 +365,7 @@
                 private_handle_t* hnd =  va_arg(args, private_handle_t*);
                 int *stride = va_arg(args, int *);
                 if (private_handle_t::validate(hnd)) {
+                    va_end(args);
                     return res;
                 }
                 MetaData_t *metadata = (MetaData_t *)hnd->base_metadata;
@@ -382,6 +383,7 @@
                 int *stride = va_arg(args, int *);
                 int *height = va_arg(args, int *);
                 if (private_handle_t::validate(hnd)) {
+                    va_end(args);
                     return res;
                 }
                 MetaData_t *metadata = (MetaData_t *)hnd->base_metadata;
@@ -416,6 +418,7 @@
                 private_handle_t* hnd =  va_arg(args, private_handle_t*);
                 int *color_space = va_arg(args, int *);
                 if (private_handle_t::validate(hnd)) {
+                    va_end(args);
                     return res;
                 }
                 MetaData_t *metadata = (MetaData_t *)hnd->base_metadata;