Changeset 94


Ignore:
Timestamp:
Jan 29, 2011, 9:57:55 PM (14 years ago)
Author:
djay
Message:

Small fix for embedded base64 string in XML request (QGIS WPS Client for instance).

Location:
trunk/zoo-kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/zoo-kernel/service_internal.c

    r93 r94  
    14001400          isSized=false;
    14011401        }
    1402         xmlAddChild(nc3,xmlNewText(BAD_CAST base64((const unsigned char*)toto->value,atoi(rs->value))));
     1402
     1403        xmlAddChild(nc3,xmlNewText(BAD_CAST base64(toto->value, atoi(rs->value))));
    14031404        if(!isSized){
    14041405          freeMap(&rs);
     
    17621763
    17631764  b64 = BIO_new(BIO_f_base64());
     1765  BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);
    17641766  bmem = BIO_new(BIO_s_mem());
    17651767  b64 = BIO_push(b64, bmem);
     
    17681770  BIO_get_mem_ptr(b64, &bptr);
    17691771
    1770   char *buff = (char *)malloc(bptr->length);
     1772  char *buff = (char *)malloc((bptr->length)*sizeof(char));
    17711773  memcpy(buff, bptr->data, bptr->length-1);
    17721774  buff[bptr->length-1] = 0;
     
    17821784
    17831785  char *buffer = (char *)malloc(length);
    1784   memset(buffer, 0, length);
    1785 
    1786   b64 = BIO_new(BIO_f_base64());
    1787   bmem = BIO_new_mem_buf(input, length);
    1788   bmem = BIO_push(b64, bmem);
    1789 
    1790   *red=BIO_read(bmem, buffer, length);
    1791 
    1792   BIO_free_all(bmem);
    1793 
     1786  if(buffer){
     1787    memset(buffer, 0, length);
     1788    b64 = BIO_new(BIO_f_base64());
     1789    if(b64){
     1790      bmem = BIO_new_mem_buf(input,length);
     1791      bmem = BIO_push(b64, bmem);
     1792      *red=BIO_read(bmem, buffer, length);
     1793      buffer[length-1]=0;
     1794      BIO_free_all(bmem);
     1795    }
     1796  }
    17941797  return buffer;
    17951798}
     
    18021805      tmp=getMap(cursor->content,"value");
    18031806      addToMap(cursor->content,"base64_value",tmp->value);
     1807      int size=0;
    18041808      char *s=strdup(tmp->value);
    18051809      free(tmp->value);
    1806       int size=0;
    18071810      tmp->value=base64d(s,strlen(s),&size);
     1811      free(s);
    18081812      char sizes[1024];
    18091813      sprintf(sizes,"%d",size);
  • trunk/zoo-kernel/zoo_service_loader.c

    r92 r94  
    13431343                }
    13441344              }
    1345               xmlChar* mv=xmlNodeListGetString(doc,cur4->xmlChildrenNode,1);
    1346               if(mv==NULL){
    1347                 xmlDocPtr doc1=xmlNewDoc(BAD_CAST "1.0");
    1348                 int buffersize;
    1349                 xmlDocSetRootElement(doc1,cur4->xmlChildrenNode);
    1350                 xmlDocDumpFormatMemoryEnc(doc1, &mv, &buffersize, "utf-8", 1);
    1351                 char size[1024];
    1352                 sprintf(size,"%d",buffersize);
    1353                 addToMap(tmpmaps->content,"size",size);
     1345              map* test=getMap(tmpmaps->content,"encoding");
     1346              if(test==NULL || strcasecmp(test->value,"base64")!=0){
     1347                xmlChar* mv=xmlNodeListGetString(doc,cur4->xmlChildrenNode,1);
     1348                if(mv==NULL){
     1349                  xmlDocPtr doc1=xmlNewDoc(BAD_CAST "1.0");
     1350                  int buffersize;
     1351                  xmlDocSetRootElement(doc1,cur4->xmlChildrenNode);
     1352                  xmlDocDumpFormatMemoryEnc(doc1, &mv, &buffersize, "utf-8", 1);
     1353                  char size[1024];
     1354                  sprintf(size,"%d",buffersize);
     1355                  addToMap(tmpmaps->content,"size",size);
     1356                }
     1357                addToMap(tmpmaps->content,"value",(char*)mv);
     1358                xmlFree(mv);
     1359              }else{
     1360                xmlSubstituteEntitiesDefault(1);
     1361                xmlChar* tmp=xmlNodeListGetString(doc,cur4->xmlChildrenNode,0);
     1362                addToMap(tmpmaps->content,"value",(char*)tmp);
     1363                map* tmpv=getMap(tmpmaps->content,"value");
     1364                char *res=NULL;
     1365                char *curs=tmpv->value;
     1366                int i=0;
     1367                for(int i=0;i<=strlen(tmpv->value)/64;i++) {
     1368                  if(res==NULL)
     1369                    res=(char*)malloc(67*sizeof(char));
     1370                  else
     1371                    res=(char*)realloc(res,(((i+1)*65)+i)*sizeof(char));
     1372                  int csize=i*65;
     1373                  strncpy(res + csize,curs,64);
     1374                  if(i==xmlStrlen(tmp)/64)
     1375                    strcat(res,"\n\0");
     1376                  else{
     1377                    strncpy(res + (((i+1)*64)+i),"\n\0",2);
     1378                    curs+=64;
     1379                  }
     1380                }
     1381                free(tmpv->value);
     1382                tmpv->value=strdup(res);
     1383                for(int j=0;j<strlen(tmpv->value);j++)
     1384                  if(tmpv->value[j]==' ')
     1385                    tmpv->value[j]='+';
     1386                free(res);
     1387                xmlFree(tmp);
    13541388              }
    1355               addToMap(tmpmaps->content,"value",(char*)mv);
    1356               xmlFree(mv);
    13571389              cur4=cur4->next;
    13581390            }
     
    17311763  int eres=SERVICE_STARTED;
    17321764  int cpid=getpid();
    1733  
     1765
    17341766  maps *_tmpMaps=(maps*)malloc(MAPS_SIZE);
    17351767  _tmpMaps->name=strdup("lenv");
     
    18361868      errorException(m, _("Unable to run the child process properly"), "InternalError");
    18371869    }
    1838        
    18391870  }
    18401871
Note: See TracChangeset for help on using the changeset viewer.

Search

Context Navigation

ZOO Sponsors

http://www.zoo-project.org/trac/chrome/site/img/geolabs-logo.pnghttp://www.zoo-project.org/trac/chrome/site/img/neogeo-logo.png http://www.zoo-project.org/trac/chrome/site/img/apptech-logo.png http://www.zoo-project.org/trac/chrome/site/img/3liz-logo.png http://www.zoo-project.org/trac/chrome/site/img/gateway-logo.png

Become a sponsor !

Knowledge partners

http://www.zoo-project.org/trac/chrome/site/img/ocu-logo.png http://www.zoo-project.org/trac/chrome/site/img/gucas-logo.png http://www.zoo-project.org/trac/chrome/site/img/polimi-logo.png http://www.zoo-project.org/trac/chrome/site/img/fem-logo.png http://www.zoo-project.org/trac/chrome/site/img/supsi-logo.png http://www.zoo-project.org/trac/chrome/site/img/cumtb-logo.png

Become a knowledge partner

Related links

http://zoo-project.org/img/ogclogo.png http://zoo-project.org/img/osgeologo.png