]> git.saurik.com Git - apt.git/blob - ftparchive/sources.cc
use free() instead of delete() when realloc is used
[apt.git] / ftparchive / sources.cc
1 #include <string>
2 #include <iostream>
3
4 // for memcpy
5 #include <cstring>
6
7 #include <apt-pkg/error.h>
8 #include <apt-pkg/gpgv.h>
9
10 #include "sources.h"
11
12 bool DscExtract::TakeDsc(const void *newData, unsigned long newSize)
13 {
14 if(newSize > maxSize)
15 return _error->Error("DSC data is too large %lu!", newSize);
16
17 if (newSize == 0)
18 {
19 Length = 0;
20 return true;
21 }
22 memcpy(Data, newData, newSize);
23 Length = newSize;
24
25 return true;
26 }
27
28 bool DscExtract::Read(std::string FileName)
29 {
30 FileFd F;
31 if (OpenMaybeClearSignedFile(FileName, F) == false)
32 return false;
33
34 unsigned long long const FSize = F.FileSize();
35 if(FSize > maxSize)
36 return _error->Error("DSC file '%s' is too large!",FileName.c_str());
37
38 if (F.Read(Data, FSize) == false)
39 return false;
40 Length = FSize;
41
42 IsClearSigned = (FileName != F.Name());
43
44 return true;
45 }
46
47