From 1024c1942bddfc584c59811839b12035433d86ce Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Thu, 8 Feb 2018 17:50:25 +0100 Subject: [PATCH] Some invalid read fixes --- src/c-wrapper/api/c-content.cpp | 12 ++++++------ src/content/file-transfer-content.cpp | 5 +++++ src/content/file-transfer-content.h | 1 + 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/c-wrapper/api/c-content.cpp b/src/c-wrapper/api/c-content.cpp index b4f77a316..3b7e009bd 100644 --- a/src/c-wrapper/api/c-content.cpp +++ b/src/c-wrapper/api/c-content.cpp @@ -122,7 +122,7 @@ const char * linphone_content_get_name(const LinphoneContent *content) { const LinphonePrivate::FileContent *fc = static_cast(c); if (content->name) ms_free(content->name); content->name = ms_strdup(L_STRING_TO_C(fc->getFileName())); - } else if (c->getContentType() == LinphonePrivate::ContentType::FileTransfer) { + } else if (c->isFileTransfer()) { const LinphonePrivate::FileTransferContent *ftc = static_cast(c); if (content->name) ms_free(content->name); content->name = ms_strdup(L_STRING_TO_C(ftc->getFileName())); @@ -135,7 +135,7 @@ void linphone_content_set_name(LinphoneContent *content, const char *name) { if (c->isFile()) { LinphonePrivate::FileContent *fc = static_cast(c); fc->setFileName(L_C_TO_STRING(name)); - } else if (c->getContentType() == LinphonePrivate::ContentType::FileTransfer) { + } else if (c->isFileTransfer()) { LinphonePrivate::FileTransferContent *ftc = static_cast(c); ftc->setFileName(L_C_TO_STRING(name)); } @@ -166,7 +166,7 @@ const char * linphone_content_get_custom_header(const LinphoneContent *content, const char *linphone_content_get_key(const LinphoneContent *content) { const LinphonePrivate::Content *c = L_GET_CPP_PTR_FROM_C_OBJECT(content); - if (c->getContentType() == LinphonePrivate::ContentType::FileTransfer) { + if (c->isFileTransfer()) { const LinphonePrivate::FileTransferContent *ftc = static_cast(c); return ftc->getFileKeyAsString(); } @@ -175,16 +175,16 @@ const char *linphone_content_get_key(const LinphoneContent *content) { size_t linphone_content_get_key_size(const LinphoneContent *content) { const LinphonePrivate::Content *c = L_GET_CPP_PTR_FROM_C_OBJECT(content); - if (c->getContentType() == LinphonePrivate::ContentType::FileTransfer) { + if (c->isFileTransfer()) { const LinphonePrivate::FileTransferContent *ftc = static_cast(c); - return ftc->getFileKey().size(); + return ftc->getFileKeySize(); } return 0; } void linphone_content_set_key(LinphoneContent *content, const char *key, const size_t keyLength) { LinphonePrivate::Content *c = L_GET_CPP_PTR_FROM_C_OBJECT(content); - if (c->getContentType() == LinphonePrivate::ContentType::FileTransfer) { + if (c->isFileTransfer()) { LinphonePrivate::FileTransferContent *ftc = static_cast(c); ftc->setFileKey(key, keyLength); } diff --git a/src/content/file-transfer-content.cpp b/src/content/file-transfer-content.cpp index 57ecff245..6dffb441d 100644 --- a/src/content/file-transfer-content.cpp +++ b/src/content/file-transfer-content.cpp @@ -166,6 +166,11 @@ const char *FileTransferContent::getFileKeyAsString() const { return d->fileKey.data(); } +size_t FileTransferContent::getFileKeySize() const { + L_D(); + return d->fileKey.size(); +} + bool FileTransferContent::isFile () const { return false; } diff --git a/src/content/file-transfer-content.h b/src/content/file-transfer-content.h index d107fcd52..0f29dc489 100644 --- a/src/content/file-transfer-content.h +++ b/src/content/file-transfer-content.h @@ -60,6 +60,7 @@ public: void setFileKey (const char *key, size_t size); const std::vector &getFileKey () const; const char *getFileKeyAsString () const; + size_t getFileKeySize() const; bool isFile () const override; bool isFileTransfer () const override;