projects
/
silc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added SILC Server library.
[silc.git]
/
lib
/
silccore
/
silcattrs.c
diff --git
a/lib/silccore/silcattrs.c
b/lib/silccore/silcattrs.c
index b01bfec7be2ca4fd9ae257464243051196284ee6..27f25f7373ebea728ba10e1c984ce7d5e9bca532 100644
(file)
--- a/
lib/silccore/silcattrs.c
+++ b/
lib/silccore/silcattrs.c
@@
-4,7
+4,7
@@
Author: Pekka Riikonen <priikone@silcnet.org>
Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2002 - 200
4
Pekka Riikonen
+ Copyright (C) 2002 - 200
5
Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-19,7
+19,7
@@
/* Implementation of Attribute Payload routines */
/* $Id$ */
/* Implementation of Attribute Payload routines */
/* $Id$ */
-#include "silc
includes
.h"
+#include "silc.h"
#include "silcattrs.h"
/******************************************************************************
#include "silcattrs.h"
/******************************************************************************
@@
-86,7
+86,7
@@
silc_attribute_payload_encode_int(SilcAttribute attribute,
SILC_STR_UI_INT(service->idle),
SILC_STR_END);
object = tmpbuf->data;
SILC_STR_UI_INT(service->idle),
SILC_STR_END);
object = tmpbuf->data;
- object_size =
tmpbuf->len
;
+ object_size =
silc_buffer_len(tmpbuf)
;
}
break;
}
break;
@@
-119,12
+119,14
@@
silc_attribute_payload_encode_int(SilcAttribute attribute,
case SILC_ATTRIBUTE_STATUS_MESSAGE:
case SILC_ATTRIBUTE_EXTENSION:
case SILC_ATTRIBUTE_STATUS_MESSAGE:
case SILC_ATTRIBUTE_EXTENSION:
+ case SILC_ATTRIBUTE_USER_ICON:
{
{
- Silc
AttributeObjMime *
mime = object;
+ Silc
Mime
mime = object;
if (object_size != sizeof(*mime))
return NULL;
if (object_size != sizeof(*mime))
return NULL;
- object = (void *)mime->mime;
- object_size = mime->mime_len;
+ str = silc_mime_encode(mime, &object_size);
+ if (!str)
+ return NULL;
}
break;
}
break;
@@
-155,7
+157,7
@@
silc_attribute_payload_encode_int(SilcAttribute attribute,
SILC_STR_UI16_STRING(len4 ? geo->accuracy : ""),
SILC_STR_END);
object = tmpbuf->data;
SILC_STR_UI16_STRING(len4 ? geo->accuracy : ""),
SILC_STR_END);
object = tmpbuf->data;
- object_size =
tmpbuf->len
;
+ object_size =
silc_buffer_len(tmpbuf)
;
}
break;
}
break;
@@
-187,7
+189,7
@@
silc_attribute_payload_encode_int(SilcAttribute attribute,
SILC_STR_UI16_STRING(len4 ? dev->language : ""),
SILC_STR_END);
object = tmpbuf->data;
SILC_STR_UI16_STRING(len4 ? dev->language : ""),
SILC_STR_END);
object = tmpbuf->data;
- object_size =
tmpbuf->len
;
+ object_size =
silc_buffer_len(tmpbuf)
;
}
break;
}
break;
@@
-207,7
+209,7
@@
silc_attribute_payload_encode_int(SilcAttribute attribute,
SILC_STR_UI_XNSTRING(pk->data, pk->data_len),
SILC_STR_END);
object = tmpbuf->data;
SILC_STR_UI_XNSTRING(pk->data, pk->data_len),
SILC_STR_END);
object = tmpbuf->data;
- object_size =
tmpbuf->len
;
+ object_size =
silc_buffer_len(tmpbuf)
;
}
break;
}
break;
@@
-286,7
+288,7
@@
SilcDList silc_attribute_payload_parse(const unsigned char *payload,
silc_buffer_set(&buffer, (unsigned char *)payload, payload_len);
list = silc_dlist_init();
silc_buffer_set(&buffer, (unsigned char *)payload, payload_len);
list = silc_dlist_init();
- while (
buffer.len
) {
+ while (
silc_buffer_len(&buffer)
) {
newp = silc_calloc(1, sizeof(*newp));
if (!newp)
goto err;
newp = silc_calloc(1, sizeof(*newp));
if (!newp)
goto err;
@@
-299,13
+301,13
@@
SilcDList silc_attribute_payload_parse(const unsigned char *payload,
if (ret == -1)
goto err;
if (ret == -1)
goto err;
- if (newp->data_len >
buffer.len
- 4) {
+ if (newp->data_len >
silc_buffer_len(&buffer)
- 4) {
SILC_LOG_ERROR(("Incorrect attribute payload in list"));
goto err;
}
len = 4 + newp->data_len;
SILC_LOG_ERROR(("Incorrect attribute payload in list"));
goto err;
}
len = 4 + newp->data_len;
- if (
buffer.len
< len)
+ if (
silc_buffer_len(&buffer)
< len)
break;
silc_buffer_pull(&buffer, len);
break;
silc_buffer_pull(&buffer, len);
@@
-349,10
+351,10
@@
SilcBuffer silc_attribute_payload_encode_data(SilcBuffer attrs,
len = 4 + (SilcUInt16)data_len;
buffer = silc_buffer_realloc(buffer,
len = 4 + (SilcUInt16)data_len;
buffer = silc_buffer_realloc(buffer,
- (buffer ?
buffer->truelen
+ len : len));
+ (buffer ?
silc_buffer_truelen(buffer)
+ len : len));
if (!buffer)
return NULL;
if (!buffer)
return NULL;
- silc_buffer_pull(buffer,
buffer->len
);
+ silc_buffer_pull(buffer,
silc_buffer_len(buffer)
);
silc_buffer_pull_tail(buffer, len);
silc_buffer_format(buffer,
SILC_STR_UI_CHAR(attribute),
silc_buffer_pull_tail(buffer, len);
silc_buffer_format(buffer,
SILC_STR_UI_CHAR(attribute),
@@
-415,7
+417,7
@@
const unsigned char *silc_attribute_get_data(SilcAttributePayload payload,
/* Construct digital signature verification data */
unsigned char *silc_attribute_get_verify_data(SilcDList attrs,
/* Construct digital signature verification data */
unsigned char *silc_attribute_get_verify_data(SilcDList attrs,
-
b
ool server_verification,
+
SilcB
ool server_verification,
SilcUInt32 *data_len)
{
SilcAttributePayload attr;
SilcUInt32 *data_len)
{
SilcAttributePayload attr;
@@
-463,11
+465,11
@@
unsigned char *silc_attribute_get_verify_data(SilcDList attrs,
/* Return parsed attribute object */
/* Return parsed attribute object */
-
b
ool silc_attribute_get_object(SilcAttributePayload payload,
+
SilcB
ool silc_attribute_get_object(SilcAttributePayload payload,
void *object, SilcUInt32 object_size)
{
SilcUInt16 len;
void *object, SilcUInt32 object_size)
{
SilcUInt16 len;
-
b
ool ret = FALSE;
+
SilcB
ool ret = FALSE;
if (!object || payload->flags & SILC_ATTRIBUTE_FLAG_INVALID)
return FALSE;
if (!object || payload->flags & SILC_ATTRIBUTE_FLAG_INVALID)
return FALSE;
@@
-549,12
+551,13
@@
bool silc_attribute_get_object(SilcAttributePayload payload,
case SILC_ATTRIBUTE_STATUS_MESSAGE:
case SILC_ATTRIBUTE_EXTENSION:
case SILC_ATTRIBUTE_STATUS_MESSAGE:
case SILC_ATTRIBUTE_EXTENSION:
+ case SILC_ATTRIBUTE_USER_ICON:
{
{
- Silc
AttributeObjMime *
mime = object;
+ Silc
Mime
mime = object;
if (object_size != sizeof(*mime))
break;
if (object_size != sizeof(*mime))
break;
- mime->mime = (const unsigned char *)payload->data;
-
mime->mime_len = payload->data_len
;
+ if (!silc_mime_decode(mime, payload->data, payload->data_len))
+
break
;
ret = TRUE;
}
break;
ret = TRUE;
}
break;
@@
-619,7
+622,7
@@
bool silc_attribute_get_object(SilcAttributePayload payload,
silc_buffer_unformat(&buffer,
SILC_STR_UI16_NSTRING_ALLOC(&pk->type, &len),
SILC_STR_END);
silc_buffer_unformat(&buffer,
SILC_STR_UI16_NSTRING_ALLOC(&pk->type, &len),
SILC_STR_END);
- if (res == -1 || len >
buffer.len
- 2)
+ if (res == -1 || len >
silc_buffer_len(&buffer)
- 2)
break;
pk->data = silc_memdup(payload->data + 2 + len,
payload->data_len - 2 - len);
break;
pk->data = silc_memdup(payload->data + 2 + len,
payload->data_len - 2 - len);