struct cdk_subpkt_s * next;
u32 size;
byte type;
- byte d[1];
+ byte *d;
};
struct cdk_keylist_s {
struct cdk_strlist_s {
struct cdk_strlist_s * next;
- char d[1];
+ char *d;
};
#endif /* CDK_CONTEXT_H */
filelen = strlen (pfx->filename);
cdk_pkt_new (&pkt);
- pt = pkt->pkt.literal = cdk_calloc (1, sizeof *pt + filelen - 1);
+ pt = pkt->pkt.literal = cdk_calloc (1, sizeof *pt + filelen);
+ pt->name = pt + sizeof(*pt);
if (!pt)
{
cdk_pkt_release (pkt);
if (!string)
return NULL;
- sl = cdk_calloc (1, sizeof *sl + strlen (string) + 1);
+ sl = cdk_calloc (1, sizeof *sl + strlen (string) + 2);
if (!sl)
return NULL;
+ sl->d = sl + sizeof(*sl);
strcpy (sl->d, string);
sl->next = *list;
*list = sl;
pkt->pkt.user_id = cdk_calloc (1, sizeof pkt->pkt.user_id);
if (!pkt->pkt.user_id)
return CDK_Out_Of_Core;
+ pkt->pkt.user_id->name = NULL;
break;
case CDK_PKT_PUBLIC_KEY:
pkt->pkt.literal = cdk_calloc (1, sizeof *pkt->pkt.literal);
if (!pkt->pkt.literal)
return CDK_Out_Of_Core;
+ pkt->pkt.literal->name = NULL;
break;
default:
return CDK_Inv_Value;
*dst = NULL;
- u = cdk_calloc (1, sizeof *u + strlen (src->name) + 1);
+ u = cdk_calloc (1, sizeof *u + strlen (src->name) + 2);
if (!u)
return CDK_Out_Of_Core;
+ u->name = (void*)u + sizeof(*u);
+
memcpy (u, src, sizeof *u);
memcpy (u->name, src->name, strlen (src->name));
u->prefs = _cdk_copy_prefs (src->prefs);
if (!size)
return NULL;
- s = cdk_calloc (1, sizeof *s + size + 1);
+ s = cdk_calloc (1, sizeof *s + size + 2);
if (!s)
return NULL;
+ s->d = (void*)s + sizeof(*s);
+
return s;
}
unsigned char *attrib_img; /* Tag 17 if not null */
size_t attrib_len;
cdk_pkt_signature_t selfsig;
- char name[1];
+ char *name;
};
typedef struct cdk_pkt_userid_s *cdk_pkt_userid_t;
int mode;
unsigned int timestamp;
int namelen;
- char name[1];
+ char *name;
};
typedef struct cdk_pkt_literal_s *cdk_pkt_literal_t;
pt->namelen = cdk_stream_getc (inp);
if (pt->namelen > 0)
{
- *ret_pt = pt = cdk_realloc (pt, sizeof *pt + pt->namelen + 1);
+ *ret_pt = pt = cdk_realloc (pt, sizeof *pt + pt->namelen + 2);
if (!pt)
return CDK_Out_Of_Core;
+ pt->name = (void*)pt + sizeof(*pt);
rc = stream_read (inp, pt->name, pt->namelen, &nread);
if (rc)
return rc;
+ pkt->pktlen + 16 + 1);
if (!pkt->pkt.user_id)
return CDK_Out_Of_Core;
+ pkt->pkt.user_id->name = (void*)pkt->pkt.user_id + sizeof(*pkt->pkt.user_id);
+
rc = read_attribute (inp, pktlen, pkt->pkt.user_id);
pkt->pkttype = CDK_PKT_ATTRIBUTE;
break;
case CDK_PKT_USER_ID:
pkt->pkt.user_id = cdk_calloc (1, sizeof *pkt->pkt.user_id
- + pkt->pktlen);
+ + pkt->pktlen + 1);
if (!pkt->pkt.user_id)
return CDK_Out_Of_Core;
+ pkt->pkt.user_id->name = (void*)pkt->pkt.user_id + sizeof(*pkt->pkt.user_id);
rc = read_user_id (inp, pktlen, pkt->pkt.user_id);
break;