aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--addressbook/ChangeLog6
-rw-r--r--addressbook/gui/contact-list-editor/e-contact-list-model.c17
2 files changed, 23 insertions, 0 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog
index 97216f6bb8..730f9cd396 100644
--- a/addressbook/ChangeLog
+++ b/addressbook/ChangeLog
@@ -1,3 +1,9 @@
+2001-07-24 Jon Trowbridge <trow@ximian.com>
+
+ * gui/contact-list-editor/e-contact-list-model.c: Added checks
+ for all of the args of the exposed functions, so that
+ we won't crash on bad inputs. (Related to bug #4856.)
+
2001-07-24 Jason Leach <jleach@ximian.com>
* gui/merging/e-card-duplicate-detected.glade: "_Add Anyway" to
diff --git a/addressbook/gui/contact-list-editor/e-contact-list-model.c b/addressbook/gui/contact-list-editor/e-contact-list-model.c
index b2b929eaa3..c4321c2820 100644
--- a/addressbook/gui/contact-list-editor/e-contact-list-model.c
+++ b/addressbook/gui/contact-list-editor/e-contact-list-model.c
@@ -167,6 +167,9 @@ e_contact_list_model_new ()
void
e_contact_list_model_add_destination (EContactListModel *model, EDestination *dest)
{
+ g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model));
+ g_return_if_fail (E_IS_DESTINATION (dest));
+
if (model->data_count + 1 >= model->data_alloc) {
model->data_alloc *= 2;
model->data = g_renew (EDestination*, model->data, model->data_alloc);
@@ -185,6 +188,9 @@ e_contact_list_model_add_email (EContactListModel *model,
{
EDestination *new_dest;
+ g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model));
+ g_return_if_fail (email != NULL);
+
new_dest = e_destination_new ();
e_destination_set_email (new_dest, email);
@@ -197,6 +203,9 @@ e_contact_list_model_add_card (EContactListModel *model,
{
EDestination *new_dest;
+ g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model));
+ g_return_if_fail (E_IS_CARD_SIMPLE (simple));
+
new_dest = e_destination_new ();
e_destination_set_card (new_dest, simple->card, 0); /* Hard-wired for default e-mail */
@@ -206,6 +215,9 @@ e_contact_list_model_add_card (EContactListModel *model,
void
e_contact_list_model_remove_row (EContactListModel *model, int row)
{
+ g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model));
+ g_return_if_fail (0 <= row && row < model->data_count);
+
gtk_object_unref (GTK_OBJECT (model->data[row]));
memmove (model->data + row, model->data + row + 1, sizeof (EDestination*) * (model->data_count - row - 1));
model->data_count --;
@@ -218,6 +230,8 @@ e_contact_list_model_remove_all (EContactListModel *model)
{
int i;
+ g_return_if_fail (E_IS_CONTACT_LIST_MODEL (model));
+
for (i = 0; i < model->data_count; i ++) {
gtk_object_unref (GTK_OBJECT (model->data[i]));
model->data[i] = NULL;
@@ -232,5 +246,8 @@ e_contact_list_model_remove_all (EContactListModel *model)
const EDestination *
e_contact_list_model_get_destination (EContactListModel *model, int row)
{
+ g_return_val_if_fail (E_IS_CONTACT_LIST_MODEL (model), NULL);
+ g_return_val_if_fail (0 <= row && row < model->data_count, NULL);
+
return model->data[row];
}