RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   18-Oct-2007 06:41:06
  Branch: HEAD                             Handle: 2007101805410500

  Modified files:
    rpm                     CHANGES
    rpm/tools               debugedit.c

  Log:
    - debugedit segfault (#336951,#337011) see #337051 too.

  Summary:
    Revision    Changes     Path
    1.1725      +1  -0      rpm/CHANGES
    2.16        +11 -6      rpm/tools/debugedit.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1724 -r1.1725 CHANGES
  --- rpm/CHANGES       17 Oct 2007 20:04:50 -0000      1.1724
  +++ rpm/CHANGES       18 Oct 2007 04:41:05 -0000      1.1725
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: debugedit segfault (#336951,#337011) see #337051 too.
       - jbj: commit to hge(h, he, ...) extraction in API. ABI not yet.
       - jbj: remove the pointless ;-) indirection in *(HE_t) for type/count.
       - jbj: drill rpmTagData everywhere.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/tools/debugedit.c
  ============================================================================
  $ cvs diff -u -r2.15 -r2.16 debugedit.c
  --- rpm/tools/debugedit.c     6 Oct 2007 01:57:18 -0000       2.15
  +++ rpm/tools/debugedit.c     18 Oct 2007 04:41:05 -0000      2.16
  @@ -589,11 +589,16 @@
        }
         else
        {
  -       memcpy (s, comp_dir, comp_dir_len);
  -       s[comp_dir_len] = '/';
  -       memcpy (s + comp_dir_len + 1, dirt[value], dir_len);
  -       s[comp_dir_len + 1 + dir_len] = '/';
  -       memcpy (s + comp_dir_len + 1 + dir_len + 1, file, file_len + 1);
  +       char *p = s;
  +       if (comp_dir_len != 0)
  +         {
  +           memcpy (s, comp_dir, comp_dir_len);
  +           s[comp_dir_len] = '/';
  +           p += comp_dir_len + 1;
  +         }
  +       memcpy (p, dirt[value], dir_len);
  +       p[dir_len] = '/';
  +       memcpy (p + dir_len + 1, file, file_len + 1);
        }
         canonicalize_path (s, s);
         if (list_file_fd != -1)
  @@ -850,6 +855,7 @@
   
          switch (form)
            {
  +         case DW_FORM_ref_addr: /* ptr_size in DWARF 2, offset in DWARF 3 */
            case DW_FORM_addr:
              ptr += ptr_size;
              break;
  @@ -875,7 +881,6 @@
            case DW_FORM_udata:
              read_uleb128 (ptr);
              break;
  -         case DW_FORM_ref_addr:
            case DW_FORM_strp:
              ptr += 4;
              break;
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to