File: setattachmentdata.cc

package info (click to toggle)
signalbackup-tools 20250313.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 3,752 kB
  • sloc: cpp: 47,042; sh: 477; ansic: 399; ruby: 19; makefile: 3
file content (48 lines) | stat: -rw-r--r-- 1,723 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
  Copyright (C) 2022-2024  Selwin van Dijk

  This file is part of signalbackup-tools.

  signalbackup-tools is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  signalbackup-tools is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with signalbackup-tools.  If not, see <https://www.gnu.org/licenses/>.
*/

#include "framewithattachment.h"

bool FrameWithAttachment::setAttachmentDataBacked(unsigned char *data, long long int datalength) // override
{
  if (!data)
    return false;
  d_attachmentdata = data;
  d_attachmentdata_size = datalength;
  return true;
}

bool FrameWithAttachment::setAttachmentDataUnbacked(unsigned char const *data, long long int datalength)
{
  bepaald::destroyPtr(&d_attachmentdata, &d_attachmentdata_size);

  d_attachmentdata_size = datalength;
  d_attachmentdata = new unsigned char[d_attachmentdata_size];
  std::memcpy(d_attachmentdata, data, datalength);

  /* used for importing LONGTEXT messages from desktop.
     While on desktop they are normal message bodies, on Android
     they are attachments. Since we are creating these attachments
     on import from bytes in memory (not file backed), these can
     not be clearData()'s at any point, since the data can not
     be read back in that case.
   */
  d_noclear = true;
  return true;
}