[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

[SRM] Update for libdebian-installer



Hi folks

I'd like to upload libdebian-installer 0.77squeeze1.

It includes one part of the minimal fix for the cdebootstrap md5sum
problem and a new architecture string.

Bastian

-- 
... bacteriological warfare ... hard to believe we were once foolish
enough to play around with that.
		-- McCoy, "The Omega Glory", stardate unknown
diff --git a/debian/changelog b/debian/changelog
index 91795ad..fdd8979 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,14 @@
+libdebian-installer (0.77squeeze1) UNRELEASED; urgency=low
+
+  [ Martin Michlmayr ]
+  * Add support for Buffalo Linkstation LiveV3 (LS-CHL).  Closes: #612168
+
+  [ Bastian Blank ]
+  * Add minimal support for SHA1 checksums in Release file parser.
+    (closes: #615883)
+
+ -- Martin Michlmayr <tbm@cyrius.com>  Wed, 23 Feb 2011 18:52:37 +0000
+
 libdebian-installer (0.77) unstable; urgency=low
 
   [ Milan Kupcevic ]
diff --git a/include/debian-installer/release.h b/include/debian-installer/release.h
index c1ff45b..b88efb7 100644
--- a/include/debian-installer/release.h
+++ b/include/debian-installer/release.h
@@ -43,7 +43,7 @@ struct di_release
   char *origin;                                 /**< Origin field */
   char *suite;                                  /**< Suite field */
   char *codename;                               /**< Codename field */
-  di_hash_table *md5sum;                        /**< MD5Sum field, includes di_release_file */
+  di_hash_table *md5sum;                        /**< checksum fields, includes di_release_file */
   di_mem_chunk *release_file_mem_chunk;         /**< @internal */
 };
 
@@ -58,7 +58,7 @@ struct di_release_file
     di_rstring key;                             /**< @internal */
   };
   unsigned int size;                            /**< size */
-  char *sum;                                    /**< checksum, currently md5 or sha */
+  char *sum[2];                                 /**< checksums, currently md5 and sha1 */
 };
 
 di_release *di_release_alloc (void);
diff --git a/src/release.c b/src/release.c
index 1352e06..cf3e10d 100644
--- a/src/release.c
+++ b/src/release.c
@@ -70,7 +70,15 @@ const di_parser_fieldinfo
       "MD5Sum",
       di_release_parser_read_file,
       NULL,
-      offsetof (di_release, md5sum)
+      0
+    ),
+  internal_di_release_parser_field_sha1 =
+    DI_PARSER_FIELDINFO
+    (
+      "SHA1",
+      di_release_parser_read_file,
+      NULL,
+      1
     );
 
 /**
@@ -82,6 +90,7 @@ const di_parser_fieldinfo *di_release_parser_fieldinfo[] =
   &internal_di_release_parser_field_suite,
   &internal_di_release_parser_field_codename,
   &internal_di_release_parser_field_md5sum,
+  &internal_di_release_parser_field_sha1,
   NULL
 };
 
@@ -92,7 +101,8 @@ static void internal_di_release_file_destroy_func (void *data)
   di_release_file *file = data;
 
   di_free (file->filename);
-  di_free (file->sum);
+  di_free (file->sum[0]);
+  di_free (file->sum[1]);
 }
 
 /**
@@ -158,11 +168,11 @@ void di_release_parser_read_file (data, fip, field_modifier, value, user_data)
   void *user_data __attribute__ ((unused));
 {
   char *begin = value->string, *next = begin, *end = value->string + value->size;
-  char buf_sum[65], buf_filename[129];
+  char *buf_sum, buf_filename[129];
   int ret;
   size_t buf_size;
   di_release *release = *data;
-  di_hash_table *table = *(di_hash_table **)((char *)*data + fip->integer);
+  di_hash_table *table = release->md5sum;
 
   while (1)
   {
@@ -170,16 +180,21 @@ void di_release_parser_read_file (data, fip, field_modifier, value, user_data)
     if (!next)
       next = end;
 
-    ret = sscanf (begin, "%64s %zu %128s", buf_sum, &buf_size, buf_filename);
+    ret = sscanf (begin, "%ms %zu %128s", &buf_sum, &buf_size, buf_filename);
 
     if (ret == 3)
     {
-      di_release_file *file = di_mem_chunk_alloc (release->release_file_mem_chunk);
-      file->key.string = strdup (buf_filename);
-      file->key.size = strlen (buf_filename);
+      di_rstring key = { buf_filename, strlen (buf_filename) };
+      di_release_file *file = di_hash_table_lookup (table, &key);
+      if (!file)
+      {
+        file = di_mem_chunk_alloc0 (release->release_file_mem_chunk);
+        file->key.string = strdup (buf_filename);
+        file->key.size = strlen (buf_filename);
+        di_hash_table_insert (table, &file->key, file);
+      }
       file->size = buf_size;
-      file->sum = strdup (buf_sum);
-      di_hash_table_insert (table, &file->key, file);
+      file->sum[fip->integer] = buf_sum;
     }
 
     begin = next + 1;
diff --git a/src/system/subarch-arm-linux.c b/src/system/subarch-arm-linux.c
index 9728c0f..65b2239 100644
--- a/src/system/subarch-arm-linux.c
+++ b/src/system/subarch-arm-linux.c
@@ -47,6 +47,7 @@ static struct map map_hardware[] = {
     { "QNAP TS-109/TS-209", "orion5x" },
     { "QNAP TS-409", "orion5x" },
     { "HP Media Vault mv2120", "orion5x" },
+    { "Buffalo Linkstation LiveV3 (LS-CHL)", "orion5x" },
     { "Buffalo Linkstation Pro/Live", "orion5x" },
     { "Marvell Orion-NAS Reference Design", "orion5x" },
     { "Marvell Orion-2 Development Board", "orion5x" },

Attachment: signature.asc
Description: Digital signature


Reply to: