Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 15 Aug 2020 20:55:06 +0000 (UTC)
From:      Joseph Mingrone <jrm@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r545068 - head/www/chromium/files
Message-ID:  <202008152055.07FKt6kQ076143@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jrm
Date: Sat Aug 15 20:55:06 2020
New Revision: 545068
URL: https://svnweb.freebsd.org/changeset/ports/545068

Log:
  www/chromium: Fix U2F authentication
  
  PR:		247744
  Submitted by:	gonzo
  Reported by:	Henry Hu <henry.hu.sh@gmail.com>
  MFH:		(blanket: bug/crash fix)

Modified:
  head/www/chromium/files/patch-services_device_hid_hid__connection__freebsd.cc   (contents, props changed)
  head/www/chromium/files/patch-services_device_hid_hid__connection__freebsd.h   (contents, props changed)
  head/www/chromium/files/patch-services_device_hid_hid__service__freebsd.cc   (contents, props changed)
  head/www/chromium/files/patch-services_device_hid_hid__service__freebsd.h   (contents, props changed)

Modified: head/www/chromium/files/patch-services_device_hid_hid__connection__freebsd.cc
==============================================================================
--- head/www/chromium/files/patch-services_device_hid_hid__connection__freebsd.cc	Sat Aug 15 20:54:03 2020	(r545067)
+++ head/www/chromium/files/patch-services_device_hid_hid__connection__freebsd.cc	Sat Aug 15 20:55:06 2020	(r545068)
@@ -1,5 +1,5 @@
---- services/device/hid/hid_connection_freebsd.cc.orig	2019-05-04 09:19:19 UTC
-+++ services/device/hid/hid_connection_freebsd.cc
+--- services/device/hid/hid_connection_freebsd.cc.orig	2020-07-18 19:40:14.410523000 -0700
++++ services/device/hid/hid_connection_freebsd.cc	2020-07-21 19:49:59.569331000 -0700
 @@ -0,0 +1,240 @@
 +// Copyright (c) 2014 The Chromium Authors. All rights reserved.
 +// Use of this source code is governed by a BSD-style license that can be
@@ -26,9 +26,9 @@
 +
 +namespace device {
 +
-+class HidConnectionFreeBSD::BlockingTaskHelper {
++class HidConnectionFreeBSD::BlockingTaskRunnerHelper {
 + public:
-+  BlockingTaskHelper(base::ScopedFD fd,
++  BlockingTaskRunnerHelper(base::ScopedFD fd,
 +                     scoped_refptr<HidDeviceInfo> device_info,
 +                     base::WeakPtr<HidConnectionFreeBSD> connection)
 +      : fd_(std::move(fd)),
@@ -40,7 +40,7 @@
 +    has_report_id_ = device_info->has_report_id();
 +  }
 +
-+  ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
++  ~BlockingTaskRunnerHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); }
 +
 +  // Starts the FileDescriptorWatcher that reads input events from the device.
 +  // Must be called on a thread that has a base::MessageLoopForIO.
@@ -49,7 +49,7 @@
 +    base::internal::AssertBlockingAllowed();
 +
 +    file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
-+        fd_.get(), base::Bind(&BlockingTaskHelper::OnFileCanReadWithoutBlocking,
++        fd_.get(), base::Bind(&BlockingTaskRunnerHelper::OnFileCanReadWithoutBlocking,
 +                              base::Unretained(this)));
 +  }
 +
@@ -176,7 +176,7 @@
 +  const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_;
 +  std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_;
 +
-+  DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++  DISALLOW_COPY_AND_ASSIGN(BlockingTaskRunnerHelper);
 +};
 +
 +HidConnectionFreeBSD::HidConnectionFreeBSD(
@@ -184,12 +184,12 @@
 +    base::ScopedFD fd,
 +    scoped_refptr<base::SequencedTaskRunner> blocking_task_runner)
 +    : HidConnection(device_info),
-+      blocking_task_runner_(std::move(blocking_task_runner)),
-+      weak_factory_(this) {
-+  helper_ = std::make_unique<BlockingTaskHelper>(std::move(fd), device_info,
-+                                                 weak_factory_.GetWeakPtr());
++      helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner)),
++      blocking_task_runner_(std::move(blocking_task_runner)) {
++  helper_.reset(new BlockingTaskRunnerHelper(std::move(fd), device_info,
++                                                 weak_factory_.GetWeakPtr()));
 +  blocking_task_runner_->PostTask(
-+      FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start,
++      FROM_HERE, base::BindOnce(&BlockingTaskRunnerHelper::Start,
 +                                base::Unretained(helper_.get())));
 +}
 +
@@ -208,7 +208,7 @@
 +
 +  blocking_task_runner_->PostTask(
 +      FROM_HERE,
-+      base::BindOnce(&BlockingTaskHelper::Write, base::Unretained(helper_.get()),
++      base::BindOnce(&BlockingTaskRunnerHelper::Write, base::Unretained(helper_.get()),
 +                 buffer, std::move(callback)));
 +}
 +
@@ -224,7 +224,7 @@
 +
 +  blocking_task_runner_->PostTask(
 +      FROM_HERE,
-+      base::BindOnce(&BlockingTaskHelper::GetFeatureReport,
++      base::BindOnce(&BlockingTaskRunnerHelper::GetFeatureReport,
 +                 base::Unretained(helper_.get()), report_id,
 +                 buffer, std::move(callback)));
 +}
@@ -236,7 +236,7 @@
 +      FROM_HERE, base::BlockingType::MAY_BLOCK);
 +  blocking_task_runner_->PostTask(
 +      FROM_HERE,
-+      base::BindOnce(&BlockingTaskHelper::SendFeatureReport,
++      base::BindOnce(&BlockingTaskRunnerHelper::SendFeatureReport,
 +                 base::Unretained(helper_.get()), buffer, std::move(callback)));
 +}
 +

Modified: head/www/chromium/files/patch-services_device_hid_hid__connection__freebsd.h
==============================================================================
--- head/www/chromium/files/patch-services_device_hid_hid__connection__freebsd.h	Sat Aug 15 20:54:03 2020	(r545067)
+++ head/www/chromium/files/patch-services_device_hid_hid__connection__freebsd.h	Sat Aug 15 20:55:06 2020	(r545068)
@@ -1,6 +1,6 @@
---- services/device/hid/hid_connection_freebsd.h.orig	2019-05-01 15:21:27 UTC
-+++ services/device/hid/hid_connection_freebsd.h
-@@ -0,0 +1,68 @@
+--- services/device/hid/hid_connection_freebsd.h.orig	2020-07-18 19:40:14.412550000 -0700
++++ services/device/hid/hid_connection_freebsd.h	2020-07-21 19:15:28.613027000 -0700
+@@ -0,0 +1,65 @@
 +// Copyright (c) 2014 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.
@@ -13,10 +13,9 @@
 +
 +#include "base/files/scoped_file.h"
 +#include "base/macros.h"
-+#include "base/memory/ptr_util.h"
-+#include "base/memory/ref_counted_memory.h"
 +#include "base/memory/weak_ptr.h"
-+#include "base/sequence_checker.h"
++#include "base/memory/ref_counted_memory.h"
++#include "base/sequenced_task_runner.h"
 +#include "services/device/hid/hid_connection.h"
 +
 +namespace base {
@@ -38,7 +37,7 @@
 +
 + private:
 +  friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>;
-+  class BlockingTaskHelper;
++  class BlockingTaskRunnerHelper;
 +
 +  ~HidConnectionFreeBSD() override;
 +
@@ -54,14 +53,12 @@
 +  // |helper_| lives on the sequence to which |blocking_task_runner_| posts
 +  // tasks so all calls must be posted there including this object's
 +  // destruction.
-+  std::unique_ptr<BlockingTaskHelper> helper_;
++  std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter> helper_;
 +
 +  const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
 +  const scoped_refptr<base::SequencedTaskRunner> task_runner_;
 +
-+  SEQUENCE_CHECKER(sequence_checker_);
-+
-+  base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_;
++  base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_{this};
 +
 +  DISALLOW_COPY_AND_ASSIGN(HidConnectionFreeBSD);
 +};

Modified: head/www/chromium/files/patch-services_device_hid_hid__service__freebsd.cc
==============================================================================
--- head/www/chromium/files/patch-services_device_hid_hid__service__freebsd.cc	Sat Aug 15 20:54:03 2020	(r545067)
+++ head/www/chromium/files/patch-services_device_hid_hid__service__freebsd.cc	Sat Aug 15 20:55:06 2020	(r545068)
@@ -1,6 +1,6 @@
---- services/device/hid/hid_service_freebsd.cc.orig	2020-03-17 15:11:01 UTC
-+++ services/device/hid/hid_service_freebsd.cc
-@@ -0,0 +1,383 @@
+--- services/device/hid/hid_service_freebsd.cc.orig	2020-07-18 19:40:14.415772000 -0700
++++ services/device/hid/hid_service_freebsd.cc	2020-07-21 20:00:55.322907000 -0700
+@@ -0,0 +1,382 @@
 +// Copyright 2014 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.
@@ -48,7 +48,7 @@
 +        callback(std::move(callback)),
 +        task_runner(base::ThreadTaskRunnerHandle::Get()),
 +        blocking_task_runner(
-+            base::CreateSequencedTaskRunner(kBlockingTaskTraits)) {}
++            base::ThreadPool::CreateSequencedTaskRunner(kBlockingTaskTraits)) {}
 +  ~ConnectParams() {}
 +
 +  scoped_refptr<HidDeviceInfo> device_info;
@@ -58,9 +58,9 @@
 +  base::ScopedFD fd;
 +};
 +
-+class HidServiceFreeBSD::BlockingTaskHelper {
++class HidServiceFreeBSD::BlockingTaskRunnerHelper {
 + public:
-+  BlockingTaskHelper(base::WeakPtr<HidServiceFreeBSD> service)
++  BlockingTaskRunnerHelper(base::WeakPtr<HidServiceFreeBSD> service)
 +      : service_(std::move(service)),
 +        task_runner_(base::ThreadTaskRunnerHandle::Get()) {
 +    DETACH_FROM_SEQUENCE(sequence_checker_);
@@ -69,7 +69,7 @@
 +    devd_buffer_ = new net::IOBufferWithSize(1024);
 +  }
 +
-+  ~BlockingTaskHelper() {
++  ~BlockingTaskRunnerHelper() {
 +  }
 +
 +  void Start() {
@@ -173,7 +173,7 @@
 +        report_descriptor,
 +	device_node));
 +
-+    task_runner_->PostTask(FROM_HERE, base::Bind(&HidServiceFreeBSD::AddDevice,
++    task_runner_->PostTask(FROM_HERE, base::BindOnce(&HidServiceFreeBSD::AddDevice,
 +                                                 service_, device_info));
 +  }
 +
@@ -231,7 +231,7 @@
 +
 +    devd_fd_.reset(devd_fd);
 +    file_watcher_ = base::FileDescriptorWatcher::WatchReadable(
-+        devd_fd_.get(), base::Bind(&BlockingTaskHelper::OnDevdMessageCanBeRead,
++        devd_fd_.get(), base::Bind(&BlockingTaskRunnerHelper::OnDevdMessageCanBeRead,
 +                                   base::Unretained(this)));
 +  }
 +
@@ -265,7 +265,7 @@
 +          if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) {
 +            permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks));
 +            timer_->Start(FROM_HERE, base::TimeDelta::FromSeconds(1),
-+                          this, &BlockingTaskHelper::CheckPendingPermissionChange);
++                          this, &BlockingTaskRunnerHelper::CheckPendingPermissionChange);
 +          }
 +        }
 +      }
@@ -298,18 +298,17 @@
 +  scoped_refptr<net::IOBufferWithSize> devd_buffer_;
 +  std::map<std::string, int> permissions_checks_attempts_;
 +
-+  DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper);
++  DISALLOW_COPY_AND_ASSIGN(BlockingTaskRunnerHelper);
 +};
 +
 +HidServiceFreeBSD::HidServiceFreeBSD()
-+    : task_runner_(base::ThreadTaskRunnerHandle::Get()),
-+      blocking_task_runner_(
-+          base::CreateSequencedTaskRunner(kBlockingTaskTraits)),
-+      weak_factory_(this) {
-+  helper_ = std::make_unique<BlockingTaskHelper>(weak_factory_.GetWeakPtr());
++    : blocking_task_runner_(
++          base::ThreadPool::CreateSequencedTaskRunner(kBlockingTaskTraits)),
++      helper_(nullptr, base::OnTaskRunnerDeleter(blocking_task_runner_)) {
++  helper_.reset(new BlockingTaskRunnerHelper(weak_factory_.GetWeakPtr()));
 +  blocking_task_runner_->PostTask(
 +      FROM_HERE,
-+      base::Bind(&BlockingTaskHelper::Start, base::Unretained(helper_.get())));
++      base::BindOnce(&BlockingTaskRunnerHelper::Start, base::Unretained(helper_.get())));
 +}
 +
 +HidServiceFreeBSD::~HidServiceFreeBSD() {

Modified: head/www/chromium/files/patch-services_device_hid_hid__service__freebsd.h
==============================================================================
--- head/www/chromium/files/patch-services_device_hid_hid__service__freebsd.h	Sat Aug 15 20:54:03 2020	(r545067)
+++ head/www/chromium/files/patch-services_device_hid_hid__service__freebsd.h	Sat Aug 15 20:55:06 2020	(r545068)
@@ -1,6 +1,6 @@
---- services/device/hid/hid_service_freebsd.h.orig	2020-03-17 15:11:01 UTC
-+++ services/device/hid/hid_service_freebsd.h
-@@ -0,0 +1,47 @@
+--- services/device/hid/hid_service_freebsd.h.orig	2020-07-18 19:40:14.418200000 -0700
++++ services/device/hid/hid_service_freebsd.h	2020-07-21 19:52:08.796704000 -0700
+@@ -0,0 +1,46 @@
 +// Copyright 2014 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.
@@ -30,17 +30,16 @@
 +
 + private:
 +  struct ConnectParams;
-+  class BlockingTaskHelper;
++  class BlockingTaskRunnerHelper;
 +
 +  static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params);
 +  static void FinishOpen(std::unique_ptr<ConnectParams> params);
 +
-+  const scoped_refptr<base::SequencedTaskRunner> task_runner_;
 +  const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_;
 +  // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds
 +  // a weak reference back to the service that owns it.
-+  std::unique_ptr<BlockingTaskHelper> helper_;
-+  base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_;
++  std::unique_ptr<BlockingTaskRunnerHelper, base::OnTaskRunnerDeleter> helper_;
++  base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_{this};
 +
 +  DISALLOW_COPY_AND_ASSIGN(HidServiceFreeBSD);
 +};



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202008152055.07FKt6kQ076143>