Commit c97e0cf1 authored by Etienne Pierre-Doray's avatar Etienne Pierre-Doray Committed by Commit Bot

[Zucchini] Implement DisassemblerNoOp.

DisassemblerNoOp is a Disassembler that does not look for reference, and
used as fallback for patching Elements not recognised as executable.

Bug: 729154
Change-Id: I4cbf355fb59bcf7df12b9e6d81029c771c52f215
Reviewed-on: https://chromium-review.googlesource.com/599023Reviewed-by: default avatarWill Harris <wfh@chromium.org>
Commit-Queue: Etienne Pierre-Doray <etiennep@chromium.org>
Cr-Commit-Position: refs/heads/master@{#491569}
parent 6782ba2e
...@@ -17,6 +17,8 @@ static_library("zucchini_lib") { ...@@ -17,6 +17,8 @@ static_library("zucchini_lib") {
"crc32.h", "crc32.h",
"disassembler.cc", "disassembler.cc",
"disassembler.h", "disassembler.h",
"disassembler_no_op.cc",
"disassembler_no_op.h",
"image_utils.h", "image_utils.h",
"io_utils.cc", "io_utils.cc",
"io_utils.h", "io_utils.h",
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/installer/zucchini/disassembler_no_op.h"
namespace zucchini {
std::unique_ptr<DisassemblerNoOp> DisassemblerNoOp::Make(
ConstBufferView image) {
std::unique_ptr<DisassemblerNoOp> disasm(new DisassemblerNoOp());
if (!disasm->Parse(image))
return nullptr;
return disasm;
}
DisassemblerNoOp::DisassemblerNoOp() = default;
DisassemblerNoOp::~DisassemblerNoOp() = default;
ExecutableType DisassemblerNoOp::GetExeType() const {
return kExeTypeNoOp;
}
std::string DisassemblerNoOp::GetExeTypeString() const {
return "(Unknown)";
}
std::vector<ReferenceGroup> DisassemblerNoOp::GetReferenceGroups() const {
return std::vector<ReferenceGroup>();
}
bool DisassemblerNoOp::Parse(ConstBufferView image) {
return true;
}
} // namespace zucchini
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_INSTALLER_ZUCCHINI_DISASSEMBLER_NO_OP_H_
#define CHROME_INSTALLER_ZUCCHINI_DISASSEMBLER_NO_OP_H_
#include <memory>
#include <string>
#include <vector>
#include "base/macros.h"
#include "chrome/installer/zucchini/buffer_view.h"
#include "chrome/installer/zucchini/disassembler.h"
#include "chrome/installer/zucchini/image_utils.h"
namespace zucchini {
// This disassembler works on any file and does not look for reference.
class DisassemblerNoOp : public Disassembler {
public:
static std::unique_ptr<DisassemblerNoOp> Make(ConstBufferView image);
~DisassemblerNoOp() override;
// Disassembler:
ExecutableType GetExeType() const override;
std::string GetExeTypeString() const override;
std::vector<ReferenceGroup> GetReferenceGroups() const override;
protected:
DisassemblerNoOp();
private:
bool Parse(ConstBufferView image) override;
DISALLOW_COPY_AND_ASSIGN(DisassemblerNoOp);
};
} // namespace zucchini
#endif // CHROME_INSTALLER_ZUCCHINI_DISASSEMBLER_NO_OP_H_
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment