Hey Guys, I’ve got a duplicacy crash when I’m trying to copy my non-encrypted SFTP storage to encrypted (both with password and RSA) GDrive.
My setup:
I’m backing up couple of PC’s to my NAS via SFTP (“unencrypted” duplicacy storage).
Some parts of my NAS are backed up to GDrive (that is “encrypted” one, with both password and RSA encryption).
I’ve tried to copy my “unencrypted” NAS storage to the same storage on the GDrive, but encrypt it on-the-fly.
In order to do so, I’ve created “fake” id on the NAS itself, pointing the the same storage as my PC’s, and than I’ve ran duplicacy copy
command.
As a result I’ve got a crash, listed below.
My “preferences” file from the NAS:
[
{
"name": "default",
"id": "<fake_name>",
"repository": "/root",
"storage": "<path_to_local_unencrypted_chunks>",
"encrypted": false,
"no_backup": false,
"no_restore": false,
"no_save_password": false,
"nobackup_file": "",
"keys": null,
"filters": ""
},
{
"name": "gdrive",
"id": "<name_of_real_storage_on_gdrive>",
"repository": "",
"storage": "gcd://Backup/Duplicacy",
"encrypted": true,
"no_backup": false,
"no_restore": false,
"no_save_password": false,
"nobackup_file": "",
"keys": {
"gcd_token": "/root/gcd-token.json",
"password": "<password>"
},
"filters": "/root/filters"
}
]
Please describe what you are doing to trigger the bug:
duplicacy copy -key <path_to_private_key.pem> -from default -to gdrive
and than I’m putting a passphrase to the key
Please describe what you expect to happen (but doesn’t):
Not to crash, and copy contents of the backup
Please describe what actually happens (the wrong behaviour):
I get this crash with stack trace:
root@duplicacy:~ # duplicacy copy -key <path_to_key> -from default -to gdrive
Repository set to /root
Source storage set to /mnt/duplicacy
Enter the passphrase for /root/private.pem:*********************************************
runtime error: invalid memory address or nil pointer dereference
goroutine 1 [running]:
runtime/debug.Stack(0x41, 0x0, 0x0)
/usr/local/go/src/runtime/debug/stack.go:24 +0x9d
runtime/debug.PrintStack()
/usr/local/go/src/runtime/debug/stack.go:16 +0x22
github.com/gilbertchen/duplicacy/src.CatchLogException()
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_log.go:183 +0xee
panic(0xd0ef20, 0x166e880)
/usr/local/go/src/runtime/panic.go:522 +0x1b5
crypto/rsa.checkPub(...)
/usr/local/go/src/crypto/rsa/rsa.go:75
crypto/rsa.EncryptOAEP(0xfc9200, 0xc0000d4300, 0xfb0e80, 0xc0000941b0, 0x0, 0xc0000bc2e0, 0x20, 0x20, 0x0, 0x0, ...)
/usr/local/go/src/crypto/rsa/rsa.go:377 +0x38
github.com/gilbertchen/duplicacy/src.(*Config).loadRSAPrivateKey(0xc000226180, 0x7fffffffedc4, 0x20, 0xc0000bc140, 0x14)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_config.go:636 +0x592
github.com/gilbertchen/duplicacy/src.(*BackupManager).LoadRSAPrivateKey(...)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/src/duplicacy_backupmanager.go:83
main.loadRSAPrivateKey(0x7fffffffedc4, 0x20, 0xc000240000, 0xc00012e420, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:218 +0x1aa
main.copySnapshots(0xc000236120)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:1177 +0x41b
github.com/gilbertchen/duplicacy/vendor/github.com/gilbertchen/cli.Command.Run(0xe22813, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe46fb9, 0x2a, 0x0, ...)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/gilbertchen/cli/command.go:160 +0x74d
github.com/gilbertchen/duplicacy/vendor/github.com/gilbertchen/cli.(*App).Run(0xc0001e4480, 0xc0000b2000, 0x8, 0x8, 0x0, 0x0)
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/vendor/github.com/gilbertchen/cli/app.go:179 +0x64f
main.main()
/Users/chgang/zincbox/go/src/github.com/gilbertchen/duplicacy/duplicacy/duplicacy_main.go:2074 +0x5b58