pndnotifyd: fix some crashes
[pandora-libraries.git] / lib / pnd_pxml.c
index 3a9406d..699f4c2 100644 (file)
@@ -16,6 +16,7 @@ pnd_pxml_handle *pnd_pxml_fetch ( char *fullpath ) {
   FILE *f;
   char *b;
   unsigned int len;
+  pnd_pxml_handle *h;
 
   f = fopen ( fullpath, "r" );
 
@@ -44,7 +45,10 @@ pnd_pxml_handle *pnd_pxml_fetch ( char *fullpath ) {
 
   fclose ( f );
 
-  return ( pnd_pxml_fetch_buffer ( fullpath, b ) );
+  h = pnd_pxml_fetch_buffer ( fullpath, b );
+  free ( b );
+
+  return ( h );
 }
 
 pnd_pxml_handle *pnd_pxml_fetch_buffer ( char *filename, char *buffer ) {
@@ -156,27 +160,18 @@ void pnd_pxml_delete ( pnd_pxml_handle h ) {
   if ( p -> associationitem1_filetype ) {
     free ( p -> associationitem1_filetype );
   }
-  if ( p -> associationitem1_parameter ) {
-    free ( p -> associationitem1_parameter );
-  }
   if ( p -> associationitem2_name ) {
     free ( p -> associationitem2_name );
   }
   if ( p -> associationitem2_filetype ) {
     free ( p -> associationitem2_filetype );
   }
-  if ( p -> associationitem2_parameter ) {
-    free ( p -> associationitem2_parameter );
-  }
   if ( p -> associationitem3_name ) {
     free ( p -> associationitem3_name );
   }
   if ( p -> associationitem1_filetype ) {
     free ( p -> associationitem3_filetype );
   }
-  if ( p -> associationitem1_parameter ) {
-    free ( p -> associationitem3_parameter );
-  }
   if ( p -> clockspeed ) {
     free ( p -> clockspeed );
   }
@@ -204,6 +199,24 @@ void pnd_pxml_delete ( pnd_pxml_handle h ) {
   if ( p -> execargs ) {
     free ( p -> execargs );
   }
+  if ( p -> mkdir_sp ) {
+    free ( p -> mkdir_sp );
+  }
+  if ( p -> package_version_major ) {
+    free ( p -> package_version_major );
+  }
+  if ( p -> package_version_minor ) {
+    free ( p -> package_version_minor );
+  }
+  if ( p -> package_version_release ) {
+    free ( p -> package_version_release );
+  }
+  if ( p -> package_version_build ) {
+    free ( p -> package_version_build );
+  }
+  if ( p -> exec_dashdash_args ) {
+    free ( p -> exec_dashdash_args );
+  }
 
   free(p); /*very important!*/
 
@@ -470,6 +483,11 @@ char *pnd_pxml_get_exec_option_no_x11 ( pnd_pxml_handle h ) {
   return ( p -> exec_no_x11 );
 }
 
+char *pnd_pxml_get_execdashdashargs ( pnd_pxml_handle h ) {
+  pnd_pxml_t *p = (pnd_pxml_t*) h;
+  return ( p -> exec_dashdash_args );
+}
+
 char *pnd_pxml_get_main_category ( pnd_pxml_handle h ) {
   pnd_pxml_t *p = (pnd_pxml_t*) h;
   return ( p -> main_category );
@@ -530,11 +548,6 @@ char *pnd_pxml_get_associationitem1_filetype ( pnd_pxml_handle h ) {
   return ( p -> associationitem1_filetype );
 }
 
-char *pnd_pxml_get_associationitem1_parameter ( pnd_pxml_handle h ) {
-  pnd_pxml_t *p = (pnd_pxml_t*) h;
-  return ( p -> associationitem1_parameter );
-}
-
 char *pnd_pxml_get_associationitem2_name ( pnd_pxml_handle h ) {
   pnd_pxml_t *p = (pnd_pxml_t*) h;
   return ( p -> associationitem2_name );
@@ -545,11 +558,6 @@ char *pnd_pxml_get_associationitem2_filetype ( pnd_pxml_handle h ) {
   return ( p -> associationitem2_filetype );
 }
 
-char *pnd_pxml_get_associationitem2_parameter ( pnd_pxml_handle h ) {
-  pnd_pxml_t *p = (pnd_pxml_t*) h;
-  return ( p -> associationitem2_parameter );
-}
-
 char *pnd_pxml_get_associationitem3_name ( pnd_pxml_handle h ) {
   pnd_pxml_t *p = (pnd_pxml_t*) h;
   return ( p -> associationitem3_name );
@@ -560,11 +568,6 @@ char *pnd_pxml_get_associationitem3_filetype ( pnd_pxml_handle h ) {
   return ( p -> associationitem3_filetype );
 }
 
-char *pnd_pxml_get_associationitem3_parameter ( pnd_pxml_handle h ) {
-  pnd_pxml_t *p = (pnd_pxml_t*) h;
-  return ( p -> associationitem3_parameter );
-}
-
 char *pnd_pxml_get_clockspeed ( pnd_pxml_handle h ) {
   pnd_pxml_t *p = (pnd_pxml_t*) h;
   return ( p -> clockspeed );
@@ -585,6 +588,26 @@ char *pnd_pxml_get_mkdir ( pnd_pxml_handle h ) {
   return ( p -> mkdir_sp );
 }
 
+char *pnd_pxml_get_package_version_major ( pnd_pxml_handle h ) {
+   pnd_pxml_t *p = (pnd_pxml_t*) h;
+   return ( p -> package_version_major );
+}
+
+char *pnd_pxml_get_package_version_minor ( pnd_pxml_handle h ) {
+   pnd_pxml_t *p = (pnd_pxml_t*) h;
+   return ( p -> package_version_minor );
+}
+
+char *pnd_pxml_get_package_version_release ( pnd_pxml_handle h ) {
+   pnd_pxml_t *p = (pnd_pxml_t*) h;
+   return ( p -> package_version_release );
+}
+
+char *pnd_pxml_get_package_version_build ( pnd_pxml_handle h ) {
+   pnd_pxml_t *p = (pnd_pxml_t*) h;
+   return ( p -> package_version_build );
+}
+
 unsigned char pnd_pxml_is_affirmative ( char *v ) {
 
   if ( ! v ) {