summary refs log tree commit diff
diff options
context:
space:
mode:
authorokan <okan>2014-01-28 20:22:21 +0000
committerokan <okan>2014-01-28 20:22:21 +0000
commitc28467cda5323f2251ed16a407fd77b7ec9e5ba6 (patch)
treea9b96f700a88b5d5e7532735655df1fdd7a572d5
parentdf15337a9f180e41d5489ad9d45fc39ed3cdd335 (diff)
downloadcwm-c28467cda5323f2251ed16a407fd77b7ec9e5ba6.tar.gz
cwm-c28467cda5323f2251ed16a407fd77b7ec9e5ba6.tar.xz
cwm-c28467cda5323f2251ed16a407fd77b7ec9e5ba6.zip
Check ignore windowname for truncation and provide user feedback during
config parse; based on a discussion with Tiago Cunha.
-rw-r--r--calmwm.h2
-rw-r--r--conf.c6
-rw-r--r--parse.y6
3 files changed, 10 insertions, 4 deletions
diff --git a/calmwm.h b/calmwm.h
index 38323e0..4ea482e 100644
--- a/calmwm.h
+++ b/calmwm.h
@@ -528,7 +528,7 @@ void			 conf_cursor(struct conf *);
 void			 conf_grab_kbd(Window);
 void			 conf_grab_mouse(Window);
 void			 conf_init(struct conf *);
-void			 conf_ignore(struct conf *, const char *);
+int			 conf_ignore(struct conf *, const char *);
 void			 conf_screen(struct screen_ctx *);
 
 void			 xev_process(void);
diff --git a/conf.c b/conf.c
index fce37ab..9ecf1b4 100644
--- a/conf.c
+++ b/conf.c
@@ -73,16 +73,18 @@ conf_autogroup(struct conf *c, int no, const char *val)
 	TAILQ_INSERT_TAIL(&c->autogroupq, aw, entry);
 }
 
-void
+int
 conf_ignore(struct conf *c, const char *val)
 {
 	struct winmatch	*wm;
 
 	wm = xcalloc(1, sizeof(*wm));
 
-	(void)strlcpy(wm->title, val, sizeof(wm->title));
+	if (strlcpy(wm->title, val, sizeof(wm->title)) >= sizeof(wm->title))
+		return (0);
 
 	TAILQ_INSERT_TAIL(&c->ignoreq, wm, entry);
+	return (1);
 }
 
 static const char *color_binds[] = {
diff --git a/parse.y b/parse.y
index 984f6bc..672a896 100644
--- a/parse.y
+++ b/parse.y
@@ -151,7 +151,11 @@ main		: FONTNAME STRING		{
 			free($3);
 		}
 		| IGNORE STRING {
-			conf_ignore(conf, $2);
+			if (!conf_ignore(conf, $2)) {
+				yyerror("ignore windowname too long");
+				free($2);
+				YYERROR;
+			}
 			free($2);
 		}
 		| BIND STRING string		{