Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 0 additions & 54 deletions common/crypto.go

This file was deleted.

11 changes: 2 additions & 9 deletions common/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (

log "github.com/sirupsen/logrus"

"github.com/vul-dbgen/share"
utils "github.com/vul-dbgen/share"
)

const FirstYear = 2014
Expand All @@ -27,20 +27,13 @@ func CreateDBFile(dbFile *DBFile) error {
}
zb := utils.GzipBytes(buf.Bytes())

// Use local encrypt function
cipherData, err := encrypt(zb, getCVEDBEncryptKey())
if err != nil {
log.WithFields(log.Fields{"error": err}).Error("Encrypt tar file fail")
return err
}

b0 := make([]byte, 0)
allb := bytes.NewBuffer(b0)

keyLen := int32(len(header))
binary.Write(allb, binary.BigEndian, &keyLen)
allb.Write(header)
allb.Write(cipherData)
allb.Write(zb)

// write to db file
fdb, err := os.Create(dbFile.Filename)
Expand Down
139 changes: 1 addition & 138 deletions share/tar.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,143 +175,6 @@ func EnsureBaseDir(fpath string) error {
return os.MkdirAll(baseDir, 0755)
}

func ExtractAllArchiveToFiles(path string, r io.Reader, maxFileSize int64, encryptKey []byte) error {
tr, err := getTarReader(r)
if err != nil {
return ErrCouldNotExtract
}
defer tr.Close()

// For each element in the archive
for {
hdr, err := tr.Next()
if err == io.EOF {
break
}
if err != nil {
return ErrCouldNotExtract
}

// Get element filename
filename := hdr.Name
filename = strings.TrimPrefix(filename, "./")

// File size limit
if maxFileSize > 0 && hdr.Size > maxFileSize {
return ErrExtractedFileTooBig
}

// Extract the element
if hdr.Typeflag == tar.TypeReg {
data, _ := ioutil.ReadAll(tr)

if encryptKey != nil {
data, _ = Encrypt(encryptKey, data)
}

err = ioutil.WriteFile(path+filename, data, 0400)
if err != nil {
return err
}
}
}

return nil
}

func ExtractAllArchive(dst string, r io.Reader, maxFileSize int64) (int64, error) {
var untarSize int64

tr, err := getTarReader(r)
if err != nil {
return untarSize, err
}
defer tr.Close()

for {
header, err := tr.Next()
switch {
// if no more files are found return
case err == io.EOF:
return untarSize, nil

// return any other error
case err != nil:
return untarSize, err

// if the header is nil, just skip it (not sure how this happens)
case header == nil:
continue
}

// the target location where the dir/file should be created
// "aufs" might have issue to create file like. ".abc.txt"
names := strings.Split(header.Name, "/")
for i, name := range names {
if len(name) > 1 && name[0] == '.' {
names[i] = "_" + name
}
}

target := filepath.Join(dst, strings.Join(names, "/"))

// the following switch could also be done using fi.Mode(), not sure if there
// a benefit of using one vs. the other.
// fi := header.FileInfo()
// File size limit
if maxFileSize > 0 && header.Size > maxFileSize {
return untarSize, ErrExtractedFileTooBig
}
untarSize += header.Size

// check the file type
switch header.Typeflag {
// if its a dir and it doesn't exist create it
case tar.TypeDir:
if _, err := os.Stat(target); err != nil {
if err := os.MkdirAll(target, 0755); err != nil {
log.WithFields(log.Fields{"err": err, "target": target}).Error("mkdirall")
return untarSize, err
}
}

// only way to put setuid and setgid back into the new file
err = os.Chmod(target, header.FileInfo().Mode()|0755) // forced read/write-able
if err != nil {
log.WithFields(log.Fields{"err": err, "path": header.Name}).Error("chmod")
}

// if it's a file create it
case tar.TypeReg:
if err := EnsureBaseDir(target); err != nil {
log.WithFields(log.Fields{"err": err, "target": target}).Error("basedir")
return untarSize, err
}

f, err := os.Create(target)
if err != nil {
log.WithFields(log.Fields{"err": err, "target": target}).Error("create")
return untarSize, err
}

// copy over contents
if _, err := io.Copy(f, tr); err != nil {
log.WithFields(log.Fields{"err": err}).Error("copy")
return untarSize, err
}
// manually close here after each file operation; defering would cause each file close
// to wait until all operations have completed.
f.Close()

// only way to put setuid and setgid back into the new file
err = os.Chmod(target, header.FileInfo().Mode()|0444) // forced read-able
if err != nil {
log.WithFields(log.Fields{"err": err, "path": header.Name}).Error("chmod")
}
}
}
}

// getTarReader returns a TarReaderCloser associated with the specified io.Reader.
//
// Gzip/Bzip2/XZ detection is done by using the magic numbers:
Expand Down Expand Up @@ -409,7 +272,7 @@ func SelectivelyExtractModules(r io.Reader, lastfix string, maxFileSize int64) (
return data, nil
}

//func SelectivelyExtractToFile(r io.Reader, prefix string, toExtract []string, dir string) (map[string]string, error) {
// func SelectivelyExtractToFile(r io.Reader, prefix string, toExtract []string, dir string) (map[string]string, error) {
func SelectivelyExtractToFile(r io.Reader, selected func(string) bool, dir string) (map[string]string, error) {
files := make(map[string]string)

Expand Down
19 changes: 0 additions & 19 deletions share/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@ package utils
import (
"bytes"
"compress/gzip"
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"fmt"
"io"
"io/ioutil"
"os/exec"
"runtime"
Expand All @@ -17,21 +13,6 @@ import (
log "github.com/sirupsen/logrus"
)

func Encrypt(encryptionKey, text []byte) ([]byte, error) {
block, err := aes.NewCipher(encryptionKey)
if err != nil {
return nil, err
}
ciphertext := make([]byte, aes.BlockSize+len(text))
iv := ciphertext[:aes.BlockSize]
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
return nil, err
}
cfb := cipher.NewCFBEncrypter(block, iv)
cfb.XORKeyStream(ciphertext[aes.BlockSize:], text)
return ciphertext, nil
}

func GzipBytes(buf []byte) []byte {
var b bytes.Buffer
w := gzip.NewWriter(&b)
Expand Down
Loading