summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xChangeLog7
-rwxr-xr-xsrc/custom.c8
-rwxr-xr-xsrc/io.c11
3 files changed, 17 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index f6eb930..f64c052 100755
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-07-29 Frederic Culot <frederic@culot.org>
+
+ * src/custom.c (custom_load_conf): use a larger buffer to read
+ configuration data
+
+ * src/io.c (io_extract_data): do not read past the maximum length
+
2009-07-27 Frederic Culot <frederic@culot.org>
* src/utils.c (free_user_data): new function
diff --git a/src/custom.c b/src/custom.c
index c68f0bb..679d914 100755
--- a/src/custom.c
+++ b/src/custom.c
@@ -1,4 +1,4 @@
-/* $calcurse: custom.c,v 1.41 2009/07/12 17:55:13 culot Exp $ */
+/* $calcurse: custom.c,v 1.42 2009/07/29 18:20:54 culot Exp $ */
/*
* Calcurse - text-based organizer
@@ -222,7 +222,7 @@ custom_load_conf (conf_t *conf, int background)
FILE *data_file;
char *mesg_line1 = _("Failed to open config file");
char *mesg_line2 = _("Press [ENTER] to continue");
- char buf[100], e_conf[100];
+ char buf[BUFSIZ], e_conf[BUFSIZ];
int var;
data_file = fopen (path_conf, "r");
@@ -237,11 +237,11 @@ custom_load_conf (conf_t *conf, int background)
pthread_mutex_lock (&nbar.mutex);
for (;;)
{
- if (fgets (buf, 99, data_file) == NULL)
+ if (fgets (buf, sizeof buf, data_file) == NULL)
{
break;
}
- io_extract_data (e_conf, buf, strlen (buf));
+ io_extract_data (e_conf, buf, sizeof buf);
switch (var)
{
diff --git a/src/io.c b/src/io.c
index 094042b..97b424d 100755
--- a/src/io.c
+++ b/src/io.c
@@ -1,4 +1,4 @@
-/* $calcurse: io.c,v 1.75 2009/07/27 21:00:41 culot Exp $ */
+/* $calcurse: io.c,v 1.76 2009/07/29 18:20:55 culot Exp $ */
/*
* Calcurse - text-based organizer
@@ -795,11 +795,12 @@ io_init (char *cfile, char *datadir)
}
}
- /* get data from file */
void
io_extract_data (char *dst_data, const char *org, int len)
{
- for (;;)
+ int i;
+
+ for (i = 0; i < len - 1; i++)
{
if (*org == '\n' || *org == '\0')
break;
@@ -1296,11 +1297,11 @@ io_load_todo (void)
else
note[0] = '\0';
/* Then read todo description. */
- (void)fgets (buf, BUFSIZ, data_file);
+ (void)fgets (buf, sizeof buf, data_file);
newline = strchr (buf, '\n');
if (newline)
*newline = '\0';
- io_extract_data (e_todo, buf, strlen (buf));
+ io_extract_data (e_todo, buf, sizeof buf);
todo_add (e_todo, id, note);
++nb_tod;
}