@@ -629,7 +629,6 @@ crypt4gh_sqlite_read(fuse_req_t req, fuse_ino_t ino, size_t size,
629629 size_t append_offset = fh -> prepend_size + fh -> payload_size ;
630630
631631 struct fuse_buf * prepend_fbuf = NULL , * append_fbuf = NULL , * data_fbuf = NULL ;
632- char * buf = NULL ;
633632 size_t prepend_len = 0 ;
634633 size_t append_len = 0 ;
635634 int err = 0 ;
@@ -691,16 +690,15 @@ crypt4gh_sqlite_read(fuse_req_t req, fuse_ino_t ino, size_t size,
691690
692691 if (fh -> header ){ // Try Crypt4GH data
693692
694- buf = calloc (data_size , sizeof (char ));
695- if (!buf ){ err = - ENOMEM ; goto error ; }
693+ data_fbuf -> mem = calloc (data_size , sizeof (char ));
694+ if (!data_fbuf -> mem ){ err = - ENOMEM ; goto error ; }
696695
697696 D3 ("encrypted data: offset %zu, size: %zu" , data_offset , data_size );
698- err = c4gh_read (data_offset , data_size , fh , buf );
697+ err = c4gh_read (data_offset , data_size , fh , data_fbuf -> mem );
699698 if (err < 0 ){ D1 ("c4gh_read error: %s" , strerror (- err )); goto error ; }
700699
701700 data_fbuf -> size = data_size ;
702701 //data_fbuf->flags = 0;
703- data_fbuf -> mem = buf ;
704702 //append_fbuf->pos = ((offset < append_offset) ? 0 : (offset - append_offset)); // not used with .mem
705703
706704 } else { // not Crypt4GH
@@ -760,8 +758,10 @@ crypt4gh_sqlite_read(fuse_req_t req, fuse_ino_t ino, size_t size,
760758
761759 if (prepend_fbuf ) free (prepend_fbuf );
762760 if (append_fbuf ) free (append_fbuf );
763- if (data_fbuf ) free (data_fbuf );
764- if (buf ) free (buf );
761+ if (data_fbuf ){
762+ if (data_fbuf -> mem ) free (data_fbuf -> mem );
763+ free (data_fbuf );
764+ }
765765
766766 if (err ) fuse_reply_err (req , - err );
767767}
0 commit comments