]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Various string length fixes. Removed an unused variable in aji_client structure ...
authorPhilippe Sultan <philippe.sultan@gmail.com>
Thu, 6 Sep 2007 16:56:29 +0000 (16:56 +0000)
committerPhilippe Sultan <philippe.sultan@gmail.com>
Thu, 6 Sep 2007 16:56:29 +0000 (16:56 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@81743 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_gtalk.c
include/asterisk/jabber.h

index 604d4c27f87e1a97343bc51503e985b55cbacd0a..9aaeeae6c15c0038d53a3c5f1e6f89be1366ed35 100644 (file)
@@ -111,8 +111,8 @@ struct gtalk_pvt {
        time_t laststun;
        struct gtalk *parent;            /*!< Parent client */
        char sid[100];
-       char us[100];
-       char them[100];
+       char us[AJI_MAX_JIDLEN];
+       char them[AJI_MAX_JIDLEN];
        char ring[10];                   /*!< Message ID of ring */
        iksrule *ringrule;               /*!< Rule for matching RING request */
        int initiator;                   /*!< If we're the initiator */
@@ -154,8 +154,8 @@ struct gtalk {
        struct gtalk_pvt *p;
        struct ast_codec_pref prefs;
        int amaflags;                   /*!< AMA Flags */
-       char user[100];
-       char context[100];
+       char user[AJI_MAX_JIDLEN];
+       char context[AST_MAX_CONTEXT];
        char accountcode[AST_MAX_ACCOUNT_CODE]; /*!< Account code */
        int capability;
        ast_group_t callgroup;  /*!< Call group */
@@ -1567,7 +1567,7 @@ static int gtalk_show_channels(int fd, int argc, char **argv)
        struct gtalk_pvt *p;
        struct ast_channel *chan;
        int numchans = 0;
-       char them[100];
+       char them[AJI_MAX_JIDLEN];
        char *jid = NULL;
        char *resource = NULL;
 
@@ -1758,7 +1758,7 @@ static int gtalk_load_config(void)
 {
        char *cat = NULL;
        struct ast_config *cfg = NULL;
-       char context[100];
+       char context[AST_MAX_CONTEXT];
        int allowguest = 1;
        struct ast_variable *var;
        struct gtalk *member;
index 181fc1a14aa775c30617bd216fb65aefe6cb9ed4..39618cd4ba5c589bbcaa3be7927d7dd9c90229c4 100644 (file)
 #include "asterisk/astobj.h"
 #include "asterisk/linkedlists.h"
 
+/* 
+ * As per RFC 3920 - section 3.1, the maximum length for a full Jabber ID 
+ * is 3071 bytes.
+ * The ABNF syntax for jid :
+ * jid = [node "@" ] domain [ "/" resource ]
+ * Each allowable portion of a JID (node identifier, domain identifier,
+ * and resource identifier) MUST NOT be more than 1023 bytes in length,
+ * resulting in a maximum total size (including the '@' and '/' separators) 
+ * of 3071 bytes.
+ */
+#define AJI_MAX_JIDLEN 3071
+#define AJI_MAX_RESJIDLEN 1023
+
 enum aji_state {
        AJI_DISCONNECTING,
        AJI_DISCONNECTED,
@@ -56,7 +69,7 @@ struct aji_capabilities {
 
 struct aji_resource {
        int status;
-       char resource[80];
+       char resource[AJI_MAX_RESJIDLEN];
        char *description;
        struct aji_version *cap;
        int priority;
@@ -72,7 +85,7 @@ struct aji_message {
 };
 
 struct aji_buddy {
-       ASTOBJ_COMPONENTS(struct aji_buddy);
+       ASTOBJ_COMPONENTS_FULL(struct aji_buddy, AJI_MAX_JIDLEN, 1);
        struct aji_resource *resources;
        unsigned int flags;
 };
@@ -88,9 +101,8 @@ struct aji_transport_container {
 struct aji_client {
        ASTOBJ_COMPONENTS(struct aji_client);
        char password[160];
-       char user[160];
-       char serverhost[160];
-       char context[100];
+       char user[AJI_MAX_JIDLEN];
+       char serverhost[AJI_MAX_RESJIDLEN];
        char statusmessage[256];
        char sid[10]; /* Session ID */
        char mid[6]; /* Message ID */