Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package google-guest-agent for openSUSE:Factory checked in at 2022-11-17 17:24:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/google-guest-agent (Old) and /work/SRC/openSUSE:Factory/.google-guest-agent.new.1597 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "google-guest-agent" Thu Nov 17 17:24:35 2022 rev:18 rq:1036260 version:20221109.00 Changes: -------- --- /work/SRC/openSUSE:Factory/google-guest-agent/google-guest-agent.changes 2022-10-21 16:20:26.894274193 +0200 +++ /work/SRC/openSUSE:Factory/.google-guest-agent.new.1597/google-guest-agent.changes 2022-11-17 17:24:46.777152766 +0100 @@ -1,0 +2,12 @@ +Wed Nov 16 15:51:28 UTC 2022 - John Paul Adrian Glaubitz <adrian.glaub...@suse.com> + +- Update to version 20221109.00 + * Validate user key for whitespace chars (#188) +- from version 20221107.00 + * Fix typo with wsfc agent (#189) +- from version 20221104.00 + * Updates to gce-workload-cert-refresh (#186) +- from version 20221025.00 + * Add workload cert refresh to preset (#185) + +------------------------------------------------------------------- Old: ---- guest-agent-20221018.00.tar.gz New: ---- guest-agent-20221109.00.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ google-guest-agent.spec ++++++ --- /var/tmp/diff_new_pack.iaRe0h/_old 2022-11-17 17:24:48.229160447 +0100 +++ /var/tmp/diff_new_pack.iaRe0h/_new 2022-11-17 17:24:48.245160532 +0100 @@ -24,7 +24,7 @@ %global import_path %{provider_prefix} Name: google-guest-agent -Version: 20221018.00 +Version: 20221109.00 Release: 0 Summary: Google Cloud Guest Agent License: Apache-2.0 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.iaRe0h/_old 2022-11-17 17:24:48.293160786 +0100 +++ /var/tmp/diff_new_pack.iaRe0h/_new 2022-11-17 17:24:48.297160807 +0100 @@ -3,8 +3,8 @@ <param name="url">https://github.com/GoogleCloudPlatform/guest-agent/</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="versionformat">20221018.00</param> - <param name="revision">20221018.00</param> + <param name="versionformat">20221109.00</param> + <param name="revision">20221109.00</param> <param name="changesgenerate">enable</param> </service> <service name="recompress" mode="disabled"> @@ -15,7 +15,7 @@ <param name="basename">guest-agent</param> </service> <service name="go_modules" mode="disabled"> - <param name="archive">guest-agent-20221018.00.tar.gz</param> + <param name="archive">guest-agent-20221109.00.tar.gz</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.iaRe0h/_old 2022-11-17 17:24:48.313160892 +0100 +++ /var/tmp/diff_new_pack.iaRe0h/_new 2022-11-17 17:24:48.317160913 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/GoogleCloudPlatform/guest-agent/</param> - <param name="changesrevision">5dd01096fddd83d2ea4401fea078f343f8e26708</param></service></servicedata> + <param name="changesrevision">8b46231252fe54d69287ff22ca2219e111dfb35d</param></service></servicedata> (No newline at EOF) ++++++ guest-agent-20221018.00.tar.gz -> guest-agent-20221109.00.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/guest-agent-20221018.00/90-google-guest-agent.preset new/guest-agent-20221109.00/90-google-guest-agent.preset --- old/guest-agent-20221018.00/90-google-guest-agent.preset 2022-10-19 00:34:58.000000000 +0200 +++ new/guest-agent-20221109.00/90-google-guest-agent.preset 2022-11-08 02:00:38.000000000 +0100 @@ -1,3 +1,4 @@ enable google-guest-agent.service enable google-shutdown-scripts.service enable google-startup-scripts.service +enable gce-workload-cert-refresh.timer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/guest-agent-20221018.00/gce-workload-cert-refresh.timer new/guest-agent-20221109.00/gce-workload-cert-refresh.timer --- old/guest-agent-20221018.00/gce-workload-cert-refresh.timer 2022-10-19 00:34:58.000000000 +0200 +++ new/guest-agent-20221109.00/gce-workload-cert-refresh.timer 2022-11-08 02:00:38.000000000 +0100 @@ -3,7 +3,7 @@ [Timer] OnBootSec=5 -OnUnitActiveSec=30m +OnUnitActiveSec=10m [Install] WantedBy=timers.target diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/guest-agent-20221018.00/gce_workload_cert_refresh/main.go new/guest-agent-20221109.00/gce_workload_cert_refresh/main.go --- old/guest-agent-20221018.00/gce_workload_cert_refresh/main.go 2022-10-19 00:34:58.000000000 +0200 +++ new/guest-agent-20221109.00/gce_workload_cert_refresh/main.go 2022-11-08 02:00:38.000000000 +0100 @@ -77,6 +77,13 @@ return nil, fmt.Errorf("HTTP 404") } + // GCE Workload Certificate endpoints return 412 Precondition failed if the VM was + // never configured with valid config values at least once. Without valid config + // values GCE cannot provision the workload certificates. + if res.StatusCode == 412 { + return nil, fmt.Errorf("HTTP 412") + } + defer res.Body.Close() md, err := ioutil.ReadAll(res.Body) if err != nil { @@ -223,9 +230,8 @@ defer logger.Infof("Done") // TODO: prune old dirs - if err := refreshCreds(); err != nil { - logger.Fatalf(err.Error()) + logger.Fatalf("Error refreshCreds: %v", err.Error()) } } @@ -262,6 +268,16 @@ return fmt.Errorf("Error writing config_status: %v", err) } + // Handles the edge case where the config values provided for the first time may be invalid. This ensures + // that the symlink directory alwasys exists and contains the config_status to surface config errors to the VM. + if _, err := os.Stat(symlink); os.IsNotExist(err) { + logger.Infof("Creating new symlink %s", symlink) + + if err := os.Symlink(contentDir, symlink); err != nil { + return fmt.Errorf("Error creating symlink: %v", err) + } + } + // Now get the rest of the content. wisMd, err := getMetadata("instance/workload-identities") if err != nil { @@ -275,7 +291,7 @@ wis := WorkloadIdentities{} if err := json.Unmarshal(wisMd, &wis); err != nil { - return fmt.Errorf("Error unmarshaling workload trusted root certs: %v", err) + return fmt.Errorf("Error unmarshaling workload identities response: %v", err) } wtrcs := WorkloadTrustedRootCerts{} @@ -312,8 +328,13 @@ return fmt.Errorf("Error rotating target link: %v", err) } - if oldTarget != "" { - logger.Infof("Remove old content dir %s", oldTarget) + // Clean up previous contents dir. + newTarget, err := os.Readlink(symlink) + if err != nil { + return fmt.Errorf("Error reading new symlink: %v, unable to remove old symlink target", err) + } + if oldTarget != newTarget { + logger.Infof("Removing old content dir %s", oldTarget) if err := os.RemoveAll(oldTarget); err != nil { return fmt.Errorf("Failed to remove old symlink target: %v", err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/guest-agent-20221018.00/google_guest_agent/wsfc.go new/guest-agent-20221109.00/google_guest_agent/wsfc.go --- old/guest-agent-20221018.00/google_guest_agent/wsfc.go 2022-10-19 00:34:58.000000000 +0200 +++ new/guest-agent-20221109.00/google_guest_agent/wsfc.go 2022-11-08 02:00:38.000000000 +0100 @@ -185,7 +185,7 @@ } }() - logger.Infof("wsfc agent stared. Listening on port: %s", a.port) + logger.Infof("wsfc agent started. Listening on port: %s", a.port) a.listener = listener return nil diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/guest-agent-20221018.00/utils/main.go new/guest-agent-20221109.00/utils/main.go --- old/guest-agent-20221018.00/utils/main.go 2022-10-19 00:34:58.000000000 +0200 +++ new/guest-agent-20221109.00/utils/main.go 2022-11-08 02:00:38.000000000 +0100 @@ -19,6 +19,7 @@ import ( "encoding/json" "errors" + "regexp" "strings" "time" @@ -88,6 +89,19 @@ } +// ValidateUserKey checks for the presence of a characters which should not be +// allowed in a username string, returns an error if any such characters are +// detected, nil otherwise. +// Currently, the only banned characters are whitespace characters. +func ValidateUserKey(user string) error { + whiteSpaceRegexp, _ := regexp.Compile("\\s") + + if whiteSpaceRegexp.MatchString(user) { + return errors.New("Invalid username - whitespace detected") + } + return nil +} + // GetUserKey takes a string and determines if it is a valid SSH key and returns // the user and key if valid, nil otherwise. func GetUserKey(rawKey string) (string, string, error) { @@ -103,6 +117,9 @@ if user == "" { return "", "", errors.New("Invalid ssh key entry - user missing") } + if err := ValidateUserKey(user); err != nil { + return "", "", err + } if err := CheckExpiredKey(key[idx+1:]); err != nil { return "", "", err } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/guest-agent-20221018.00/utils/main_test.go new/guest-agent-20221109.00/utils/main_test.go --- old/guest-agent-20221018.00/utils/main_test.go 2022-10-19 00:34:58.000000000 +0200 +++ new/guest-agent-20221109.00/utils/main_test.go 2022-11-08 02:00:38.000000000 +0100 @@ -83,3 +83,25 @@ } } } + +func TestValidateUserKey(t *testing.T) { + table := []struct { + user string + valid bool + }{ + {"username", true}, + {"username:key", true}, + {"user -g", false}, + {"user -g 27", false}, + {"user\t-g", false}, + {"user\n-g", false}, + {"username\t-g\n27", false}, + } + for _, tt := range table { + err := ValidateUserKey(tt.user) + isValid := err == nil + if isValid != tt.valid { + t.Errorf("Invalid ValidateUserKey(%s) return: expected: %t - got: %t", tt.user, isValid, tt.valid) + } + } +} ++++++ vendor.tar.gz ++++++