SML_API void smlFreeMetinfAnchor(SmlMetInfAnchorPtr_t data) {
    if (!data) return;
	smlFreePcdata(data->last);
	smlFreePcdata(data->next);
	smlLibFree(data);
	return;
}
SML_API void smlFreeDevInfDSMem(SmlDevInfDSMemPtr_t data) {
    if (!data) return;
    // %%%luz:2003-04-28: this is now a flag! smlFreePcdata(data->shared);
    smlFreePcdata(data->maxmem);
    smlFreePcdata(data->maxid);
    smlLibFree(data);
}
SML_API void smlFreeMetinfMem(SmlMetInfMemPtr_t data) {
    if (!data) return;
	smlFreePcdata(data->shared);
	smlFreePcdata(data->free);
	smlFreePcdata(data->freeid);
	smlLibFree(data);
	return;
}
SML_API void smlFreeDevInfCTData(SmlDevInfCTDataPtr_t data) {
    if (!data) return;
    smlFreePcdata(data->name);
    smlFreePcdata(data->dname);
    smlFreePcdataList(data->valenum);
    smlFreePcdata(data->datatype);
    smlFreePcdata(data->size);
    smlLibFree(data);
}
SML_API void smlFreeAtomic(SmlAtomicPtr_t pAtomic)
{
	if (! pAtomic)
		return;

	smlFreePcdata(pAtomic->cmdID);
	smlFreePcdata(pAtomic->meta);

	smlLibFree(pAtomic);
}
SML_API void smlFreeCredPtr(SmlCredPtr_t pCred)
{
	if (! pCred)
		return;

	smlFreePcdata(pCred->meta);
	smlFreePcdata(pCred->data);

	smlLibFree(pCred);
}
SML_API void smlFreeSourceTargetPtr(SmlSourcePtr_t pSourceTarget)
{
	if (! pSourceTarget)
		return;

	smlFreePcdata(pSourceTarget->locURI);
	smlFreePcdata(pSourceTarget->locName);

	smlLibFree(pSourceTarget);
}
SML_API void smlFreeItemPtr(SmlItemPtr_t pItem)
{
	if (! pItem)
		return;

	smlFreePcdata(pItem->meta);
	smlFreePcdata(pItem->data);

	smlFreeSourceTargetPtr(pItem->source);
	smlFreeSourceTargetPtr(pItem->target);

	smlLibFree(pItem);
}
SML_API void smlFreeDevInfDatastore(SmlDevInfDatastorePtr_t data) {
    if (!data) return;
    smlFreePcdata(data->sourceref);
    smlFreePcdata(data->displayname);
    smlFreePcdata(data->maxguidsize);
    smlFreeDevInfXmit(data->rxpref);
    smlFreeDevInfXmit(data->txpref);
    smlFreeDevInfXmitList(data->rx);
    smlFreeDevInfXmitList(data->tx);
    smlFreeDevInfDSMem(data->dsmem);
    smlFreeDevInfSynccap(data->synccap);
    smlLibFree(data);
    return;
}
SML_API void smlFreeGeneric(SmlGenericCmdPtr_t pGenericCmd)
{
	if (! pGenericCmd)
		return;

	smlFreePcdata(pGenericCmd->cmdID);
	smlFreePcdata(pGenericCmd->meta);

	smlFreeCredPtr(pGenericCmd->cred);

	smlFreeItemList(pGenericCmd->itemList);

	smlLibFree(pGenericCmd);
}
SML_API void smlFreeAlert(SmlAlertPtr_t pAlert)
{
	if (! pAlert)
		return;

	smlFreePcdata(pAlert->cmdID);
	smlFreePcdata(pAlert->data);

	smlFreeCredPtr(pAlert->cred);

	smlFreeItemList(pAlert->itemList);

	smlLibFree(pAlert);
}
SML_API void smlFreeSync(SmlSyncPtr_t pSync)
{
	if (! pSync)
		return;

	smlFreePcdata(pSync->cmdID);
	smlFreePcdata(pSync->meta);

	smlFreeSourceTargetPtr(pSync->source);
	smlFreeSourceTargetPtr(pSync->target);

	smlFreeCredPtr(pSync->cred);

	smlLibFree(pSync);
}
SML_API void smlFreeGetPut(SmlPutPtr_t pGetPut)
{
	if (! pGetPut)
		return;

	smlFreePcdata(pGetPut->cmdID);
	smlFreePcdata(pGetPut->meta);
	smlFreePcdata(pGetPut->lang);

	smlFreeCredPtr(pGetPut->cred);

	smlFreeItemList(pGetPut->itemList);

	smlLibFree(pGetPut);
}
SML_API void smlFreePcdataList(SmlPcdataListPtr_t list) {
	if (!list) return;
	smlFreePcdataList(list->next);
	smlFreePcdata(list->data);
	smlLibFree(list);
	return;
}
Example #15
0
static int prv_fill_item(SmlItemPtr_t itemP,
                         dmtree_node_t node)
{
    itemP->source = smlAllocSource();
    if (!itemP->source)
    {
        return OMADM_SYNCML_ERROR_COMMAND_FAILED;
    }
    smlFreePcdata(itemP->source->locURI);
    itemP->source->locURI = smlString2Pcdata(node.uri);
    if (node.data_buffer)
    {
        itemP->data = smlAllocPcdata();
        if (!itemP->data)
        {
            return OMADM_SYNCML_ERROR_COMMAND_FAILED;
        }
        itemP->data->content = malloc(node.data_size);
        if (!itemP->data->content)
        {
            return OMADM_SYNCML_ERROR_COMMAND_FAILED;
        }
        memcpy(itemP->data->content, node.data_buffer, node.data_size);
        itemP->data->contentType = SML_PCDATA_OPAQUE;
        itemP->data->length = node.data_size;
    }
    itemP->meta = convert_to_meta(node.format, node.type);

    return OMADM_SYNCML_ERROR_SUCCESS;
}
SML_API void smlFreeMap(SmlMapPtr_t pMap)
{
	if (! pMap)
		return;

	smlFreePcdata(pMap->cmdID);
	smlFreePcdata(pMap->meta);

	smlFreeCredPtr(pMap->cred);

	smlFreeSourceTargetPtr(pMap->source);
	smlFreeSourceTargetPtr(pMap->target);

	smlFreeMapItemList(pMap->mapItemList);

	smlLibFree(pMap);
}
SML_API void smlFreeChalPtr(SmlChalPtr_t pChal)
{
	if (! pChal)
		return;

	smlFreePcdata(pChal->meta);

	smlLibFree(pChal);
}
SML_API void smlFreeSearch(SmlSearchPtr_t pSearch)
{
	if (! pSearch)
		return;

	smlFreePcdata(pSearch->cmdID);
	smlFreePcdata(pSearch->lang);
	smlFreePcdata(pSearch->meta);
	smlFreePcdata(pSearch->data);

	smlFreeCredPtr(pSearch->cred);

	smlFreeSourceTargetPtr(pSearch->target);

	smlFreeSourceList(pSearch->sourceList);

	smlLibFree(pSearch);
}
/** Subfunctions to smlFreePcdata, to freeup DevInf DTD structures **/
SML_API void smlFreeDevInfDevInf(SmlDevInfDevInfPtr_t data) {
    if (!data) return;
    smlFreePcdata(data->verdtd);
    smlFreePcdata(data->man);
    smlFreePcdata(data->mod);
    smlFreePcdata(data->oem);
    smlFreePcdata(data->fwv);
    smlFreePcdata(data->hwv);
    smlFreePcdata(data->swv);
    smlFreePcdata(data->devid);
    smlFreePcdata(data->devtyp);
    smlFreeDevInfDatastoreList(data->datastore);
    smlFreeDevInfExtList(data->ext);
    smlFreeDevInfCtcapList(data->ctcap);
    smlLibFree(data);
}
SML_API void smlFreeTargetRefList(SmlTargetRefListPtr_t pTargetRefList)
{
	SmlTargetRefListPtr_t	pTmp;

	while (pTargetRefList) {
		pTmp = pTargetRefList->next;
		smlFreePcdata(pTargetRefList->targetRef);
		smlLibFree(pTargetRefList);
		pTargetRefList = pTmp;
	}
}
SML_API void smlFreeSourceRefList(SmlSourceRefListPtr_t pSourceRefList)
{
	SmlSourceRefListPtr_t	pTmp;

	while (pSourceRefList) {
		pTmp = pSourceRefList->next;
		smlFreePcdata(pSourceRefList->sourceRef);
		smlLibFree(pSourceRefList);
		pSourceRefList = pTmp;
	}
}
SML_API void smlFreeStatus(SmlStatusPtr_t pStatus)
{
	if (! pStatus)
		return;

	smlFreePcdata(pStatus->cmdID);
	smlFreePcdata(pStatus->msgRef);
	smlFreePcdata(pStatus->cmdRef);
	smlFreePcdata(pStatus->cmd);
	smlFreePcdata(pStatus->data);

	smlFreeCredPtr(pStatus->cred);
	smlFreeChalPtr(pStatus->chal);

	smlFreeTargetRefList(pStatus->targetRefList);
	smlFreeSourceRefList(pStatus->sourceRefList);

	smlFreeItemList(pStatus->itemList);

	smlLibFree(pStatus);
}
SML_API void smlFreeExec(SmlExecPtr_t pExec)
{
	if (! pExec)
		return;

	smlFreePcdata(pExec->cmdID);

	smlFreeCredPtr(pExec->cred);

	smlFreeItemPtr(pExec->item);

	smlLibFree(pExec);
}
/** Subfunctions to smlFreePcdata, to freeup MetaInf DTD structures **/
SML_API void smlFreeMetinfMetinf(SmlMetInfMetInfPtr_t data) {
    if (!data) return;
	smlFreePcdata(data->format);
	smlFreePcdata(data->type);
	smlFreePcdata(data->mark);
	smlFreePcdata(data->size);
	smlFreePcdata(data->version);
	smlFreePcdata(data->nextnonce);
	smlFreePcdata(data->maxmsgsize);
    /* SCTSTK - 18/03/2002, S.H. 2002-04-05 : SyncML 1.1 */
	smlFreePcdata(data->maxobjsize);
	smlFreeMetinfAnchor(data->anchor);
	smlFreeMetinfMem(data->mem);
	smlFreePcdataList(data->emi);
	smlLibFree(data);
	return;
}
Example #25
0
SmlChalPtr_t get_challenge(authDesc_t * authP)
{
    SmlPcdataPtr_t metaP;
    SmlChalPtr_t chalP;

    switch (authP->type)
    {
    case AUTH_TYPE_BASIC:
        metaP = create_chal_meta(authP->type, NULL);
        break;
    case AUTH_TYPE_DIGEST:
        {
            int nonce;
            
            srand(time(0));
            nonce = rand();
            if (authP->data.buffer) free(authP->data.buffer);
            authP->data.buffer = (uint8_t *)&nonce;
            authP->data.len = 8;
            authP->data.buffer = (uint8_t *)encode_b64(authP->data);
            authP->data.len = strlen((const char *)(authP->data.buffer));
            metaP = create_chal_meta(authP->type, &(authP->data));
        }
        break;
    default:
        metaP = NULL;
        break;
    }

    if (metaP)
    {
        chalP = (SmlChalPtr_t)malloc(sizeof(SmlChal_t));
        if(chalP)
        {
            chalP->meta = metaP;
        }
        else
        {
            smlFreePcdata(metaP);
        }
    }
    else
    {
        chalP = NULL;
    }

    return chalP;
}
static SmlSyncHdrPtr_t prvGetHeader(internals_t * internP)
{
    SmlSyncHdrPtr_t headerP;

    headerP = smlAllocSyncHdr();
    if (headerP)
    {
        set_pcdata_string(headerP->version, "1.2");
        set_pcdata_string(headerP->proto, "DM/1.2");
        set_pcdata_hex(headerP->sessionID, internP->session_id);
        set_pcdata_int(headerP->msgID, internP->message_id);
        set_pcdata_int(headerP->msgID, internP->message_id);
        set_pcdata_string(headerP->target->locURI, internP->account->server_uri);
        set_pcdata_string(headerP->source->locURI, internP->account->id);
        if (OMADM_SYNCML_ERROR_AUTHENTICATION_ACCEPTED != internP->clt_auth)
        {
            headerP->cred = get_credentials(internP->account->toServerCred);
        }
        headerP->meta = smlAllocPcdata();
        if (headerP->meta)
        {
            SmlMetInfMetInfPtr_t metInfP;

            metInfP = smlAllocMetInfMetInf();
            if (metInfP)
            {
                metInfP->maxmsgsize = smlString2Pcdata(PRV_MAX_MESSAGE_SIZE);
                headerP->meta->contentType = SML_PCDATA_EXTENSION;
                headerP->meta->extension = SML_EXT_METINF;
                headerP->meta->length = 0;
                headerP->meta->content = metInfP;
            }
            else
            {
                smlFreePcdata(headerP->meta);
                headerP->meta = NULL;
            }
        }

    }

    return headerP;
}
SML_API void smlFreeResults(SmlResultsPtr_t pResults)
{
	if (! pResults)
		return;

	smlFreePcdata(pResults->cmdID);
	smlFreePcdata(pResults->msgRef);
	smlFreePcdata(pResults->cmdRef);
	smlFreePcdata(pResults->meta);
	smlFreePcdata(pResults->targetRef);
	smlFreePcdata(pResults->sourceRef);

	smlFreeItemList(pResults->itemList);

	smlLibFree(pResults);
}
SML_API void smlFreeSyncHdr(SmlSyncHdrPtr_t pSyncHdr)
{
	if (! pSyncHdr)
		return;

	smlFreePcdata(pSyncHdr->version);
	smlFreePcdata(pSyncHdr->proto);
	smlFreePcdata(pSyncHdr->sessionID);
	smlFreePcdata(pSyncHdr->msgID);
	smlFreePcdata(pSyncHdr->respURI);
	smlFreePcdata(pSyncHdr->meta);

	smlFreeSourceTargetPtr(pSyncHdr->source);
	smlFreeSourceTargetPtr(pSyncHdr->target);

	smlFreeCredPtr(pSyncHdr->cred);

	smlLibFree(pSyncHdr);
}
SML_API void smlFreeDevInfExt(SmlDevInfExtPtr_t data) {
    if (!data) return;
    smlFreePcdata(data->xnam);
    smlFreePcdataList(data->xval);
    smlLibFree(data);
}
SML_API void smlFreeDevInfCTCap(SmlDevInfCTCapPtr_t data) {
    if (!data) return;
    smlFreePcdata(data->cttype);
    smlFreeDevInfCTDataPropList(data->prop);
    smlLibFree(data);
}