Package: release.debian.org Severity: normal User: release.debian....@packages.debian.org Usertags: unblock
Please unblock package 'mc' mc/3:4.8.3-5 fixes two regressions from previous versions as per quote from Changelog: * new backported patches: + to fix "Garbage directory listing in ftpfs" (Closes: #681515, #675921). + to fix "hex search: can't find 00 (zeroes) in patterns". * mc.desktop is validated with 'desktop-file-validate' and corrected. As long as I can recall 'ftpfs' was working correctly in Squeeze and this defect has a potential for data corruption. Fixes are implemented using backported patches from newer release. See all the changes in the attached diff. unblock mc/3:4.8.3-5 Thank you. Regards, Dmitry.
diff --git a/debian/changelog b/debian/changelog index e3c317c..472cfc4 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,19 @@ +mc (3:4.8.3-5) unstable; urgency=low + + * 2800.patch is corrected to avoid crash on entering archives. + + -- Dmitry Smirnov <only...@member.fsf.org> Sun, 05 Aug 2012 21:52:36 +1000 + +mc (3:4.8.3-4) unstable; urgency=low + + * new backported patches: + + to fix "Garbage directory listing in ftpfs" + (Closes: #681515, #675921). + + to fix "hex search: can't find 00 (zeroes) in patterns". + * mc.desktop is validated with 'desktop-file-validate' and corrected. + + -- Dmitry Smirnov <only...@member.fsf.org> Sun, 05 Aug 2012 09:51:58 +1000 + mc (3:4.8.3-3) unstable; urgency=high * added new backported patch to fix issue which may cause loss of data diff --git a/debian/mc.desktop b/debian/mc.desktop index b50456e..f159e65 100644 --- a/debian/mc.desktop +++ b/debian/mc.desktop @@ -16,5 +16,4 @@ Exec=mc Icon=MidnightCommander Terminal=true Type=Application -Categories=ConsoleOnly;Utility;FileManager; -# vi: encoding=utf-8 +Categories=ConsoleOnly;Utility;FileManager;System;FileTools; diff --git a/debian/patches/2795.patch b/debian/patches/2795.patch new file mode 100644 index 0000000..8a9b2bc --- /dev/null +++ b/debian/patches/2795.patch @@ -0,0 +1,283 @@ +Last-Update: 2012-08-05 +Author: Dmitry Smirnov <only...@member.fsf.org> +Applied-Upstream: 2.8.4 +Forwarded: not-needed +Bug-MC: https://www.midnight-commander.org/ticket/2795 +Description: backported fix for "hex search: can't find 00 (zeroes) in patterns" + +--- a/lib/filehighlight/ini-file-read.c ++++ b/lib/filehighlight/ini-file-read.c +@@ -162,7 +162,7 @@ + + mc_filter = g_new0 (mc_fhl_filter_t, 1); + mc_filter->type = MC_FLHGH_T_FREGEXP; +- mc_filter->search_condition = mc_search_new (buf->str, -1); ++ mc_filter->search_condition = mc_search_new (buf->str, buf->len); + mc_filter->search_condition->is_case_sensitive = + mc_config_get_bool (fhl->config, group_name, "extensions_case", TRUE); + mc_filter->search_condition->search_type = MC_SEARCH_T_REGEX; +--- a/lib/search.h ++++ b/lib/search.h +@@ -13,7 +13,8 @@ + + /*** typedefs(not structures) and defined constants **********************************************/ + +-typedef int (*mc_search_fn) (const void *user_data, gsize char_offset); ++typedef int (*mc_search_fn) (const void *user_data, gsize char_offset, int *current_char); ++typedef int (*mc_update_fn) (const void *user_data, gsize char_offset); + + #define MC_SEARCH__NUM_REPLACE_ARGS 64 + +@@ -77,12 +78,11 @@ + mc_search_fn search_fn; + + /* function, used for updatin current search status. NULL if not used */ +- mc_search_fn update_fn; ++ mc_update_fn update_fn; + + /* type of search */ + mc_search_type_t search_type; + +- + /* public output data */ + + /* some data for normal */ +--- a/lib/search/internal.h ++++ b/lib/search/internal.h +@@ -47,7 +47,7 @@ + + gchar *mc_search__get_one_symbol (const char *, const char *, gsize, gboolean *); + +-int mc_search__get_char (mc_search_t *, const void *, gsize); ++mc_search_cbret_t mc_search__get_char (mc_search_t *, const void *, gsize, int *); + + GString *mc_search__tolower_case_str (const char *, const char *, gsize); + +--- a/lib/search/lib.c ++++ b/lib/search/lib.c +@@ -137,15 +137,18 @@ + + /* --------------------------------------------------------------------------------------------- */ + +-int +-mc_search__get_char (mc_search_t * lc_mc_search, const void *user_data, gsize current_pos) ++mc_search_cbret_t ++mc_search__get_char (mc_search_t * lc_mc_search, const void *user_data, gsize current_pos, ++ int *current_char) + { +- char *data; +- if (lc_mc_search->search_fn) +- return (lc_mc_search->search_fn) (user_data, current_pos); ++ unsigned char *data; + +- data = (char *) user_data; +- return (int) (unsigned char) data[current_pos]; ++ if (lc_mc_search->search_fn != NULL) ++ return lc_mc_search->search_fn (user_data, current_pos, current_char); ++ ++ data = (unsigned char *) user_data; ++ *current_char = (int) data[current_pos]; ++ return (*current_char == 0) ? MC_SEARCH_CB_ABORT : MC_SEARCH_CB_OK; + } + + /* --------------------------------------------------------------------------------------------- */ +--- a/lib/search/regex.c ++++ b/lib/search/regex.c +@@ -259,9 +259,8 @@ + #ifdef SEARCH_TYPE_GLIB + GError *error = NULL; + +- if (!g_regex_match_full +- (regex, search_str->str, -1, 0, G_REGEX_MATCH_NEWLINE_ANY, &lc_mc_search->regex_match_info, +- &error)) ++ if (!g_regex_match_full (regex, search_str->str, search_str->len, 0, G_REGEX_MATCH_NEWLINE_ANY, ++ &lc_mc_search->regex_match_info, &error)) + { + g_match_info_free (lc_mc_search->regex_match_info); + lc_mc_search->regex_match_info = NULL; +@@ -278,7 +277,7 @@ + lc_mc_search->num_results = g_match_info_get_match_count (lc_mc_search->regex_match_info); + #else /* SEARCH_TYPE_GLIB */ + lc_mc_search->num_results = pcre_exec (regex, lc_mc_search->regex_match_info, +- search_str->str, search_str->len - 1, 0, 0, ++ search_str->str, search_str->len, 0, 0, + lc_mc_search->iovector, MC_SEARCH__NUM_REPLACE_ARGS); + if (lc_mc_search->num_results < 0) + { +@@ -793,8 +792,8 @@ + mc_search__run_regex (mc_search_t * lc_mc_search, const void *user_data, + gsize start_search, gsize end_search, gsize * found_len) + { ++ mc_search_cbret_t ret = MC_SEARCH_CB_ABORT; + gsize current_pos, virtual_pos; +- int current_chr = 0; + gint start_pos; + gint end_pos; + +@@ -809,44 +808,38 @@ + g_string_set_size (lc_mc_search->regex_buffer, 0); + lc_mc_search->start_buffer = current_pos; + +- while (1) ++ while (TRUE) + { +- current_chr = mc_search__get_char (lc_mc_search, user_data, current_pos); +- if (current_chr == MC_SEARCH_CB_ABORT) ++ int current_chr = '\n'; /* stop search symbol */ ++ ++ ret = mc_search__get_char (lc_mc_search, user_data, current_pos, ¤t_chr); ++ if (ret == MC_SEARCH_CB_ABORT) + break; + +- if (current_chr == MC_SEARCH_CB_INVALID) ++ if (ret == MC_SEARCH_CB_INVALID) + continue; + + current_pos++; + +- if (current_chr == MC_SEARCH_CB_SKIP) ++ if (ret == MC_SEARCH_CB_SKIP) + continue; + + virtual_pos++; + + g_string_append_c (lc_mc_search->regex_buffer, (char) current_chr); + +- +- if (current_chr == 0 || (char) current_chr == '\n') +- break; +- +- if (virtual_pos > end_search) ++ if ((char) current_chr == '\n' || virtual_pos > end_search) + break; +- + } ++ + switch (mc_search__regex_found_cond (lc_mc_search, lc_mc_search->regex_buffer)) + { + case COND__FOUND_OK: + #ifdef SEARCH_TYPE_GLIB + if (lc_mc_search->whole_words) +- { + g_match_info_fetch_pos (lc_mc_search->regex_match_info, 2, &start_pos, &end_pos); +- } + else +- { + g_match_info_fetch_pos (lc_mc_search->regex_match_info, 0, &start_pos, &end_pos); +- } + #else /* SEARCH_TYPE_GLIB */ + if (lc_mc_search->whole_words) + { +@@ -859,7 +852,7 @@ + end_pos = lc_mc_search->iovector[1]; + } + #endif /* SEARCH_TYPE_GLIB */ +- if (found_len) ++ if (found_len != NULL) + *found_len = end_pos - start_pos; + lc_mc_search->normal_offset = lc_mc_search->start_buffer + start_pos; + return TRUE; +@@ -870,18 +863,20 @@ + lc_mc_search->regex_buffer = NULL; + return FALSE; + } ++ + if ((lc_mc_search->update_fn != NULL) && + ((lc_mc_search->update_fn) (user_data, current_pos) == MC_SEARCH_CB_ABORT)) +- current_chr = MC_SEARCH_CB_ABORT; ++ ret = MC_SEARCH_CB_ABORT; + +- if (current_chr == MC_SEARCH_CB_ABORT) ++ if (ret == MC_SEARCH_CB_ABORT) + break; + } ++ + g_string_free (lc_mc_search->regex_buffer, TRUE); + lc_mc_search->regex_buffer = NULL; + lc_mc_search->error = MC_SEARCH_E_NOTFOUND; + +- if (current_chr != MC_SEARCH_CB_ABORT) ++ if (ret != MC_SEARCH_CB_ABORT) + lc_mc_search->error_str = g_strdup (_(STR_E_NOTFOUND)); + else + lc_mc_search->error_str = NULL; +--- a/src/editor/edit-impl.h ++++ b/src/editor/edit-impl.h +@@ -239,7 +239,8 @@ + void edit_push_markers (WEdit * edit); + void edit_replace_cmd (WEdit * edit, int again); + void edit_search_cmd (WEdit * edit, gboolean again); +-int edit_search_cmd_callback (const void *user_data, gsize char_offset); ++mc_search_cbret_t edit_search_cmd_callback (const void *user_data, gsize char_offset, ++ int *current_char); + void edit_complete_word_cmd (WEdit * edit); + void edit_get_match_keyword_cmd (WEdit * edit); + int edit_save_block (WEdit * edit, const char *filename, long start, long finish); +--- a/src/editor/editcmd.c ++++ b/src/editor/editcmd.c +@@ -2687,10 +2687,11 @@ + + /* --------------------------------------------------------------------------------------------- */ + +-int +-edit_search_cmd_callback (const void *user_data, gsize char_offset) ++mc_search_cbret_t ++edit_search_cmd_callback (const void *user_data, gsize char_offset, int *current_char) + { +- return edit_get_byte ((WEdit *) user_data, (long) char_offset); ++ *current_char = edit_get_byte ((WEdit *) user_data, (long) char_offset); ++ return MC_SEARCH_CB_OK; + } + + /* --------------------------------------------------------------------------------------------- */ +--- a/src/viewer/internal.h ++++ b/src/viewer/internal.h +@@ -321,7 +321,8 @@ + void mcview_display_text (mcview_t *); + + /* search.c: */ +-int mcview_search_cmd_callback (const void *user_data, gsize char_offset); ++mc_search_cbret_t mcview_search_cmd_callback (const void *user_data, gsize char_offset, ++ int *current_char); + int mcview_search_update_cmd_callback (const void *, gsize); + void mcview_do_search (mcview_t * view); + +--- a/src/viewer/search.c ++++ b/src/viewer/search.c +@@ -158,19 +158,16 @@ + /*** public functions ****************************************************************************/ + /* --------------------------------------------------------------------------------------------- */ + +-int +-mcview_search_cmd_callback (const void *user_data, gsize char_offset) ++mc_search_cbret_t ++mcview_search_cmd_callback (const void *user_data, gsize char_offset, int *current_char) + { +- int lc_byte; + mcview_t *view = (mcview_t *) user_data; + + /* view_read_continue (view, &view->search_onechar_info); *//* AB:FIXME */ + if (!view->text_nroff_mode) + { +- if (!mcview_get_byte (view, char_offset, &lc_byte)) +- return MC_SEARCH_CB_OK; +- +- return lc_byte; ++ mcview_get_byte (view, char_offset, current_char); ++ return MC_SEARCH_CB_OK; + } + + if (view->search_numNeedSkipChar != 0) +@@ -208,10 +205,10 @@ + return MC_SEARCH_CB_INVALID; + } + +- lc_byte = search_cb_char_buffer[search_cb_char_curr_index]; ++ *current_char = search_cb_char_buffer[search_cb_char_curr_index]; + search_cb_char_curr_index++; +- return (lc_byte != -1) ? (unsigned char) lc_byte : MC_SEARCH_CB_INVALID; + ++ return (*current_char != -1) ? MC_SEARCH_CB_OK : MC_SEARCH_CB_INVALID; + } + + /* --------------------------------------------------------------------------------------------- */ diff --git a/debian/patches/2800.patch b/debian/patches/2800.patch new file mode 100644 index 0000000..9da69e3 --- /dev/null +++ b/debian/patches/2800.patch @@ -0,0 +1,376 @@ +Last-Update: 2012-08-05 +Author: Dmitry Smirnov <only...@member.fsf.org> +Applied-Upstream: 2.8.4 +Forwarded: not-needed +Bug-MC: https://www.midnight-commander.org/ticket/2800 +Description: backported fix for "Garbage directory listing in ftpfs" + +--- a/lib/vfs/direntry.c ++++ b/lib/vfs/direntry.c +@@ -1044,45 +1044,35 @@ + /* Ook, these were functions around directory entries / inodes */ + /* -------------------------------- superblock games -------------------------- */ + /** +- * get path from last VFS-element and create corresponding superblock ++ * get superlock object by vpath + * +- * @param vpath source path object +- * @param archive pointer to object for store newly created superblock +- * @param flags flags +- * +- * @return path from last VFS-element ++ * @param vpath path ++ * @return superlock object or NULL if not found + */ +-const char * +-vfs_s_get_path (const vfs_path_t * vpath, struct vfs_s_super **archive, int flags) ++ ++struct vfs_s_super * ++vfs_get_super_by_vpath (const vfs_path_t * vpath) + { + GList *iter; +- const char *retval; +- int result = -1; +- struct vfs_s_super *super; + void *cookie = NULL; + const vfs_path_element_t *path_element; +- vfs_path_t *vpath_archive; + struct vfs_s_subclass *subclass; ++ struct vfs_s_super *super = NULL; ++ vfs_path_t *vpath_archive; + + path_element = vfs_path_get_by_index (vpath, -1); + subclass = ((struct vfs_s_subclass *) path_element->class->data); +- + if (subclass == NULL) + return NULL; + + vpath_archive = vfs_path_clone (vpath); + vfs_path_remove_element_by_index (vpath_archive, -1); + +- retval = (path_element->path != NULL) ? path_element->path : ""; +- + if (subclass->archive_check != NULL) + { + cookie = subclass->archive_check (vpath_archive); + if (cookie == NULL) +- { +- vfs_path_free (vpath_archive); +- return NULL; +- } ++ goto ret; + } + + for (iter = subclass->supers; iter != NULL; iter = g_list_next (iter)) +@@ -1093,29 +1083,70 @@ + + /* 0 == other, 1 == same, return it, 2 == other but stop scanning */ + i = subclass->archive_same (path_element, super, vpath_archive, cookie); ++ if (i == 1) ++ goto ret; + if (i != 0) +- { +- if (i == 1) +- goto return_success; + break; +- } ++ ++ super = NULL; + } + ++ ret: ++ vfs_path_free (vpath_archive); ++ return super; ++} ++ ++/* --------------------------------------------------------------------------------------------- */ ++/** ++ * get path from last VFS-element and create corresponding superblock ++ * ++ * @param vpath source path object ++ * @param archive pointer to object for store newly created superblock ++ * @param flags flags ++ * ++ * @return path from last VFS-element ++ */ ++const char * ++vfs_s_get_path (const vfs_path_t * vpath, struct vfs_s_super **archive, int flags) ++{ ++ const char *retval = ""; ++ int result = -1; ++ struct vfs_s_super *super; ++ const vfs_path_element_t *path_element; ++ struct vfs_s_subclass *subclass; ++ ++ path_element = vfs_path_get_by_index (vpath, -1); ++ ++ if (path_element->path != NULL) ++ retval = path_element->path; ++ ++ super = vfs_get_super_by_vpath(vpath); ++ if (super != NULL) ++ goto return_success; ++ + if (flags & FL_NO_OPEN) + { + path_element->class->verrno = EIO; +- vfs_path_free (vpath_archive); + return NULL; + } + + super = vfs_s_new_super (path_element->class); ++ ++ subclass = ((struct vfs_s_subclass *) path_element->class->data); + if (subclass->open_archive != NULL) ++ { ++ vfs_path_t *vpath_archive; ++ ++ vpath_archive = vfs_path_clone (vpath); ++ vfs_path_remove_element_by_index (vpath_archive, -1); ++ + result = subclass->open_archive (super, vpath_archive, path_element); ++ vfs_path_free (vpath_archive); ++ } + if (result == -1) + { + vfs_s_free_super (path_element->class, super); + path_element->class->verrno = EIO; +- vfs_path_free (vpath_archive); + return NULL; + } + if (!super->name) +@@ -1128,7 +1159,6 @@ + + return_success: + *archive = super; +- vfs_path_free (vpath_archive); + return retval; + } + +--- a/lib/vfs/interface.c ++++ b/lib/vfs/interface.c +@@ -699,34 +699,25 @@ + path_element = vfs_path_get_by_index (vfs_get_raw_current_dir (), -1); + if (vfs_path_element_valid (path_element)) + { ++ struct vfs_s_super *super; ++ + if (*path_element->path != '\0') + { + char *p; + + p = strchr (path_element->path, 0) - 1; +- if (p != NULL && *p == PATH_SEP && p != path_element->path) ++ if (*p == PATH_SEP && p > path_element->path) + *p = '\0'; + } +-#ifdef ENABLE_VFS_NET +- { +- struct vfs_s_subclass *subclass; + +- subclass = (struct vfs_s_subclass *) path_element->class->data; +- if (subclass != NULL) +- { +- struct vfs_s_super *super = NULL; +- +- (void) vfs_s_get_path (vpath, &super, 0); +- if (super != NULL && super->path_element != NULL) +- { +- g_free (super->path_element->path); +- super->path_element->path = g_strdup (path_element->path); +- } +- } ++ super = vfs_get_super_by_vpath (vpath); ++ if (super != NULL && super->path_element != NULL) ++ { ++ g_free (super->path_element->path); ++ super->path_element->path = g_strdup (path_element->path); + } +-#endif /* ENABLE_VFS_NET */ +- + } ++ + return 0; + + error_end: +--- a/lib/vfs/xdirentry.h ++++ b/lib/vfs/xdirentry.h +@@ -176,6 +176,7 @@ + /* outside interface */ + void vfs_s_init_class (struct vfs_class *vclass, struct vfs_s_subclass *sub); + const char *vfs_s_get_path (const vfs_path_t * vpath, struct vfs_s_super **archive, int flags); ++struct vfs_s_super *vfs_get_super_by_vpath(const vfs_path_t * vpath); + + void vfs_s_invalidate (struct vfs_class *me, struct vfs_s_super *super); + char *vfs_s_fullpath (struct vfs_class *me, struct vfs_s_inode *ino); +--- a/src/vfs/fish/fish.c ++++ b/src/vfs/fish/fish.c +@@ -543,7 +543,6 @@ + if (fish_info (me, super)) + SUP->scr_env = fish_set_env (SUP->host_flags); + +- vfs_print_message (_("fish: Connected, home %s."), super->path_element->path); + #if 0 + super->name = + g_strconcat ("sh://", super->path_element->user, "@", super->path_element->host, "/", +@@ -1568,7 +1567,11 @@ + } + break; + } +- name = vfs_path_element_build_pretty_path_str (super->path_element); ++ ++ name = ++ g_strconcat (vfs_fish_ops.prefix, VFS_PATH_URL_DELIMITER, ++ super->path_element->user, "@", super->path_element->host, flags, "/", ++ super->path_element->path, (char *) NULL); + func (name); + g_free (name); + } +--- a/src/vfs/ftpfs/ftpfs.c ++++ b/src/vfs/ftpfs/ftpfs.c +@@ -219,6 +219,7 @@ + * "LIST" instead + */ + int ctl_connection_busy; ++ char *current_dir; + } ftp_super_data_t; + + typedef struct +@@ -262,6 +263,7 @@ + c) strip trailing "/." + */ + ++static char *ftpfs_get_current_directory (struct vfs_class *me, struct vfs_s_super *super); + static int ftpfs_chdir_internal (struct vfs_class *me, struct vfs_s_super *super, + const char *remote_path); + static int ftpfs_command (struct vfs_class *me, struct vfs_s_super *super, int wait_reply, +@@ -424,11 +426,11 @@ + sock = ftpfs_open_socket (me, super); + if (sock != -1) + { +- char *cwdir = super->path_element->path; ++ char *cwdir = SUP->current_dir; + + close (SUP->sock); + SUP->sock = sock; +- super->path_element->path = NULL; ++ SUP->current_dir = NULL; + + + if (ftpfs_login_server (me, super, super->path_element->password) != 0) +@@ -440,7 +442,7 @@ + return sock == COMPLETE ? 1 : 0; + } + +- super->path_element->path = cwdir; ++ SUP->current_dir = cwdir; + } + + return 0; +@@ -548,6 +550,7 @@ + ftpfs_command (me, super, NONE, "QUIT"); + close (SUP->sock); + } ++ g_free (SUP->current_dir); + g_free (super->data); + super->data = NULL; + } +@@ -960,6 +963,10 @@ + } + while (retry_seconds != 0); + ++ SUP->current_dir = ftpfs_get_current_directory (me, super); ++ if (SUP->current_dir == NULL) ++ SUP->current_dir = g_strdup (PATH_SEP_STR); ++ + return 0; + } + +@@ -1012,6 +1019,55 @@ + } + + /* --------------------------------------------------------------------------------------------- */ ++/* The returned directory should always contain a trailing slash */ ++ ++static char * ++ftpfs_get_current_directory (struct vfs_class *me, struct vfs_s_super *super) ++{ ++ char buf[MC_MAXPATHLEN + 1]; ++ ++ if (ftpfs_command (me, super, NONE, "PWD") == COMPLETE && ++ ftpfs_get_reply (me, SUP->sock, buf, sizeof (buf)) == COMPLETE) ++ { ++ char *bufp = NULL; ++ char *bufq; ++ ++ for (bufq = buf; *bufq != '\0'; bufq++) ++ if (*bufq == '"') ++ { ++ if (bufp == NULL) ++ bufp = bufq + 1; ++ else ++ { ++ *bufq = '\0'; ++ ++ if (*bufp != '\0') ++ { ++ if (*(bufq - 1) != '/') ++ { ++ *bufq++ = '/'; ++ *bufq = '\0'; ++ } ++ ++ if (*bufp == '/') ++ return g_strdup (bufp); ++ ++ /* If the remote server is an Amiga a leading slash ++ might be missing. MC needs it because it is used ++ as separator between hostname and path internally. */ ++ return g_strconcat ("/", bufp, (char *) NULL); ++ } ++ ++ break; ++ } ++ } ++ } ++ ++ ftpfs_errno = EIO; ++ return NULL; ++} ++ ++/* --------------------------------------------------------------------------------------------- */ + /* Setup Passive PASV FTP connection */ + + static int +@@ -1991,9 +2047,9 @@ + { + (void) me; + +- if (super->path_element->path == NULL) ++ if (SUP->current_dir == NULL) + return FALSE; +- return (strcmp (path, super->path_element->path) == 0); ++ return (strcmp (path, SUP->current_dir) == 0); + } + + /* --------------------------------------------------------------------------------------------- */ +@@ -2014,7 +2070,11 @@ + if (r != COMPLETE) + ftpfs_errno = EIO; + else ++ { ++ g_free (SUP->current_dir); ++ SUP->current_dir = g_strdup (remote_path); + SUP->cwd_deferred = 0; ++ } + return r; + } + +@@ -2188,6 +2248,7 @@ + char *name; + + name = vfs_path_element_build_pretty_path_str (super->path_element); ++ + func (name); + g_free (name); + } diff --git a/debian/patches/series b/debian/patches/series index e1b25a7..b198108 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -22,3 +22,5 @@ fix_open_archive.patch fix_broken_test.patch fix_chown.patch fix_nospace.patch +2795.patch +2800.patch
signature.asc
Description: This is a digitally signed message part.