Skip to content

Commit

Permalink
math/sc-im: fix segmentation fault upon :wq
Browse files Browse the repository at this point in the history
- bug reported upstream as andmarti1424/sc-im#280

PR:		227861
Submitted by:	Samy Mahmoudi <samy.mahmoudi@gmail.com>
Approved by:	bapt (maintainer timeout)
  • Loading branch information
opsec committed Aug 19, 2018
1 parent e2846f1 commit 9252803
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 3 deletions.
7 changes: 4 additions & 3 deletions math/sc-im/Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# $FreeBSD$

PORTNAME= sc-im
PORTVERSION= 0.7.0
PORTNAME= sc-im
PORTVERSION= 0.7.0
DISTVERSIONPREFIX= v
CATEGORIES= math
PORTREVISION= 1
CATEGORIES= math

MAINTAINER= bapt@FreeBSD.org
COMMENT= Ncurses spreadsheet program for terminal
Expand Down
11 changes: 11 additions & 0 deletions math/sc-im/files/patch-cmds__command.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- cmds_command.c.orig 2018-08-03 06:04:39 UTC
+++ cmds_command.c
@@ -826,7 +826,7 @@ void do_commandmode(struct block * sb) {
exec_cmd(line);

} else if ( inputline[0] == L'w' ) {
- if (savefile() == 0 && ! wcscmp(inputline, L"wq")) shall_quit = 1;
+ if (savefile() == 0 && ! wcsncmp(inputline, L"wq", 2)) shall_quit = 1;

} else if ( ! wcsncmp(inputline, L"file ", 5) ) {

11 changes: 11 additions & 0 deletions math/sc-im/files/patch-doc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- doc.orig 2018-08-03 06:09:42 UTC
+++ doc
@@ -328,6 +328,8 @@ Commands for handling cell content:
:w {file} Save the current spreadsheet as {file}.
:w! {file} Save the current spreadsheet as {file}, forcing an overwrite
if {file} already exists.
+ :wq Save the current spreadsheet and quit SC-IM.
+ :wq {file} Save the current spreadsheet as {file} and quit SC-IM.

:h Show this help.
:help Show this help.
16 changes: 16 additions & 0 deletions math/sc-im/files/patch-file.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
--- file.c.orig 2017-12-13 17:48:59 UTC
+++ file.c
@@ -202,7 +202,12 @@ int savefile() {
del_range_chars(name, 0, 1 + force_rewrite);
wordexp(name, &p, 0);

- if (! force_rewrite && p.we_wordv[0] && file_exists(p.we_wordv[0])) {
+ if (wcslen(inputline) > 2 && (!p.we_wordv || !p.we_wordv[0])) {
+ sc_error("Trailing space(s)");
+ return -1;
+ }
+
+ if (! force_rewrite && p.we_wordv && p.we_wordv[0] && file_exists(p.we_wordv[0])) {
sc_error("File already exists. Use \"!\" to force rewrite.");
wordfree(&p);
return -1;

0 comments on commit 9252803

Please sign in to comment.