summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Schierer <lschiere@pidgin.im>2007-10-19 18:30:30 +0000
committerLuke Schierer <lschiere@pidgin.im>2007-10-19 18:30:30 +0000
commitb828d623a975ce6e68ced22f960ca46f31b86a5b (patch)
tree5522308f6b86af8781d90caedafb49ce40efb45f
parent31a208818688abf563a85dea43cd61cfbc69eee7 (diff)
downloadpidgin-b828d623a975ce6e68ced22f960ca46f31b86a5b.tar.gz
applied changes from 1095e0c294d15e95c8909d270748c5253226bfe6
through a976c1dbb1135583dc67c67af14aa684fd4e18ee applied changes from a976c1dbb1135583dc67c67af14aa684fd4e18ee through 62ac0eb5b2ae2fda530b7230c8a903cc5ecd4513
-rw-r--r--libpurple/protocols/jabber/usermood.c24
-rw-r--r--libpurple/util.c5
-rw-r--r--libpurple/util.h2
3 files changed, 24 insertions, 7 deletions
diff --git a/libpurple/protocols/jabber/usermood.c b/libpurple/protocols/jabber/usermood.c
index d6d9717b28..4253fd9e06 100644
--- a/libpurple/protocols/jabber/usermood.c
+++ b/libpurple/protocols/jabber/usermood.c
@@ -26,6 +26,7 @@
#include <string.h>
#include "internal.h"
#include "request.h"
+#include "debug.h"
static const char *moodstrings[] = {
"afraid",
@@ -145,9 +146,26 @@ void jabber_mood_init(void) {
}
static void do_mood_set_from_fields(PurpleConnection *gc, PurpleRequestFields *fields) {
- JabberStream *js = gc->proto_data;
-
- jabber_mood_set(js, moodstrings[purple_request_fields_get_choice(fields, "mood")], purple_request_fields_get_string(fields, "text"));
+ JabberStream *js;
+ int max_mood_idx;
+ int selected_mood = purple_request_fields_get_choice(fields, "mood");
+
+ if (!PURPLE_CONNECTION_IS_VALID(gc)) {
+ purple_debug_error("jabber", "Unable to set mood; account offline.\n");
+ return;
+ }
+
+ js = gc->proto_data;
+
+ /* This is ugly, but protects us from unexpected values. */
+ for (max_mood_idx = 0; moodstrings[max_mood_idx]; max_mood_idx++);
+
+ if (selected_mood < 0 || selected_mood >= max_mood_idx) {
+ purple_debug_error("jabber", "Invalid mood index (%d) selected.\n", selected_mood);
+ return;
+ }
+
+ jabber_mood_set(js, moodstrings[selected_mood], purple_request_fields_get_string(fields, "text"));
}
static void do_mood_set_mood(PurplePluginAction *action) {
diff --git a/libpurple/util.c b/libpurple/util.c
index 49cc608c68..aa77050596 100644
--- a/libpurple/util.c
+++ b/libpurple/util.c
@@ -2565,15 +2565,14 @@ purple_util_write_data_to_file(const char *filename, const char *data, gssize si
filename_full = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s", user_dir, filename);
- ret = purple_util_write_data_to_file_absolute(filename_full,
- data,size);
+ ret = purple_util_write_data_to_file_absolute(filename_full, data, size);
g_free(filename_full);
return ret;
}
gboolean
-purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, size_t size)
+purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, gssize size)
{
gchar *filename_temp;
FILE *file;
diff --git a/libpurple/util.h b/libpurple/util.h
index 94c61cf67c..c5c7f09578 100644
--- a/libpurple/util.h
+++ b/libpurple/util.h
@@ -607,7 +607,7 @@ gboolean purple_util_write_data_to_file(const char *filename, const char *data,
*
*/
gboolean
-purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, size_t size);
+purple_util_write_data_to_file_absolute(const char *filename_full, const char *data, gssize size);
/**
* Read the contents of a given file and parse the results into an